### EXPORT FUNC 180001000 (67 bytes) name=FUN_180001000 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_180001000(void) { FUN_180002ab0((ulonglong *)&DAT_180016060,1); _DAT_180016068 = DAT_180016060; *DAT_180016060 = 0x7e; _DAT_180016068 = _DAT_180016068 + 1; atexit(FUN_18000e300); return; } ================================================================== ### EXPORT FUNC 180001050 (79 bytes) name=FUN_180001050 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_180001050(void) { FUN_180002ab0((ulonglong *)&DAT_180016000,8); _DAT_180016008 = DAT_180016000; *DAT_180016000 = 0x339393939393902; _DAT_180016008 = _DAT_180016008 + 1; atexit(FUN_18000e370); return; } ================================================================== ### EXPORT FUNC 1800010a0 (79 bytes) name=FUN_1800010a0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1800010a0(void) { FUN_180002ab0((ulonglong *)&DAT_180016018,8); _DAT_180016020 = DAT_180016018; *DAT_180016018 = 0x334313231323102; _DAT_180016020 = _DAT_180016020 + 1; atexit(FUN_18000e3e0); return; } ================================================================== ### EXPORT FUNC 1800010f0 (67 bytes) name=FUN_1800010f0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1800010f0(void) { FUN_180002ab0((ulonglong *)&DAT_180016090,1); _DAT_180016098 = DAT_180016090; *DAT_180016090 = 0x13; _DAT_180016098 = _DAT_180016098 + 1; atexit(FUN_18000e450); return; } ================================================================== ### EXPORT FUNC 180001140 (67 bytes) name=FUN_180001140 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_180001140(void) { FUN_180002ab0((ulonglong *)&DAT_180016078,1); _DAT_180016080 = DAT_180016078; *DAT_180016078 = 0x12; _DAT_180016080 = _DAT_180016080 + 1; atexit(FUN_18000e4c0); return; } ================================================================== ### EXPORT FUNC 180001190 (92 bytes) name=FUN_180001190 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_180001190(void) { void *pvVar1; undefined4 local_res8; undefined2 local_resc; local_res8 = 0x70757766; local_resc = 0xa0d; FUN_180002ab0((ulonglong *)&DAT_180016030,6); pvVar1 = DAT_180016030; memmove(DAT_180016030,&local_res8,6); _DAT_180016038 = (longlong)pvVar1 + 6; atexit(FUN_18000e530); return; } ================================================================== ### EXPORT FUNC 1800011f0 (90 bytes) name=FUN_1800011f0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_1800011f0(void) { void *pvVar1; undefined4 local_res8; undefined1 local_resc; local_res8 = 0xd726576; local_resc = 10; FUN_180002ab0((ulonglong *)&DAT_1800160a8,5); pvVar1 = DAT_1800160a8; memmove(DAT_1800160a8,&local_res8,5); _DAT_1800160b0 = (longlong)pvVar1 + 5; atexit(FUN_18000e5a0); return; } ================================================================== ### EXPORT FUNC 180001250 (67 bytes) name=FUN_180001250 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_180001250(void) { FUN_180002ab0((ulonglong *)&DAT_180016048,1); _DAT_180016050 = DAT_180016048; *DAT_180016048 = 4; _DAT_180016050 = _DAT_180016050 + 1; atexit(FUN_18000e610); return; } ================================================================== ### EXPORT FUNC 1800012a0 (45 bytes) name=FUN_1800012a0 void FUN_1800012a0(void) { FUN_180002610(&DAT_180015060,"SCANNER_NORMAL",0xe); atexit(FUN_18000e6f0); return; } ================================================================== ### EXPORT FUNC 1800012d0 (45 bytes) name=FUN_1800012d0 void FUN_1800012d0(void) { FUN_180002610(&DAT_1800150a0,"SCANNER_OFFLINE",0xf); atexit(FUN_18000e760); return; } ================================================================== ### EXPORT FUNC 180001300 (45 bytes) name=FUN_180001300 void FUN_180001300(void) { FUN_180002610(&DAT_1800151e0,"SCANNER_DATA_EXCEED",0x13); atexit(FUN_18000e7d0); return; } ================================================================== ### EXPORT FUNC 180001330 (45 bytes) name=FUN_180001330 void FUN_180001330(void) { FUN_180002610(&DAT_180015180,"SCANNER_FILTED_QR",0x11); atexit(FUN_18000e840); return; } ================================================================== ### EXPORT FUNC 180001360 (45 bytes) name=FUN_180001360 void FUN_180001360(void) { FUN_180002610(&DAT_1800150e0,"SCANNER_FILTED_EAN8",0x13); atexit(FUN_18000e8b0); return; } ================================================================== ### EXPORT FUNC 180001390 (45 bytes) name=FUN_180001390 void FUN_180001390(void) { FUN_180002610(&DAT_180015160,"SCANNER_FILTED_EAN13",0x14); atexit(FUN_18000e920); return; } ================================================================== ### EXPORT FUNC 1800013c0 (45 bytes) name=FUN_1800013c0 void FUN_1800013c0(void) { FUN_180002610(&DAT_1800151c0,"SCANNER_FILTED_C39",0x12); atexit(FUN_18000e990); return; } ================================================================== ### EXPORT FUNC 1800013f0 (45 bytes) name=FUN_1800013f0 void FUN_1800013f0(void) { FUN_180002610(&DAT_180015120,"SCANNER_FILTED_C128",0x13); atexit(FUN_18000ea00); return; } ================================================================== ### EXPORT FUNC 180001420 (45 bytes) name=FUN_180001420 void FUN_180001420(void) { FUN_180002610(&DAT_1800150c0,"SCANNER_FILTED_GS1",0x12); atexit(FUN_18000ea70); return; } ================================================================== ### EXPORT FUNC 180001450 (45 bytes) name=FUN_180001450 void FUN_180001450(void) { FUN_180002610(&DAT_180015140,"SCANNER_FILTED_UPA",0x12); atexit(FUN_18000eae0); return; } ================================================================== ### EXPORT FUNC 180001480 (45 bytes) name=FUN_180001480 void FUN_180001480(void) { FUN_180002610(&DAT_180015100,"SCANNER_FILTED_UPB",0x12); atexit(FUN_18000eb50); return; } ================================================================== ### EXPORT FUNC 1800014b0 (45 bytes) name=FUN_1800014b0 void FUN_1800014b0(void) { FUN_180002610(&DAT_1800151a0,"SCANNER_FILTED_UPE",0x12); atexit(FUN_18000ebc0); return; } ================================================================== ### EXPORT FUNC 1800014e0 (45 bytes) name=FUN_1800014e0 void FUN_1800014e0(void) { FUN_180002610(&DAT_180015040,"SCANNER_FILTED_COUPON",0x15); atexit(FUN_18000ec30); return; } ================================================================== ### EXPORT FUNC 180001510 (45 bytes) name=FUN_180001510 void FUN_180001510(void) { FUN_180002610(&DAT_180015080,"SCANNER_FILTED_WWW",0x12); atexit(FUN_18000eca0); return; } ================================================================== ### EXPORT FUNC 180001540 (6 bytes) name=FUN_180001540 undefined8 FUN_180001540(void) { return 1; } ================================================================== ### EXPORT FUNC 180001550 (116 bytes) name=FUN_180001550 void FUN_180001550(undefined4 *param_1) { int iVar1; iVar1 = MAG_IsProcessingImage(param_1[4]); if (iVar1 != 0) { MAG_StopProcessImage(param_1[4]); } iVar1 = MAG_IsLinked(param_1[4]); if (iVar1 != 0) { MAG_DisLinkCamera(param_1[4]); } iVar1 = MAG_IsInitialized(param_1[4]); if (iVar1 != 0) { MAG_Free(param_1[4]); *param_1 = 0; } iVar1 = MAG_IsChannelAvailable(param_1[4]); if (iVar1 != 0) { MAG_DelChannel(param_1[4]); param_1[4] = 0xffffffff; } return; } ================================================================== ### EXPORT FUNC 1800015d0 (121 bytes) name=FUN_1800015d0 int FUN_1800015d0(int *param_1) { int iVar1; uint uVar2; if (*param_1 != 0) { return 1; } uVar2 = param_1[4]; if (0x80 < uVar2) { uVar2 = 0; do { iVar1 = MAG_IsChannelAvailable(uVar2); if (iVar1 == 0) { MAG_NewChannel(uVar2); param_1[4] = uVar2; goto LAB_180001626; } uVar2 = uVar2 + 1; } while ((int)uVar2 < 0x81); uVar2 = param_1[4]; LAB_180001626: if (0x80 < uVar2) goto LAB_18000163c; } iVar1 = MAG_Initialize(uVar2,*(undefined8 *)(param_1 + 2)); *param_1 = iVar1; LAB_18000163c: return *param_1; } ================================================================== ### EXPORT FUNC 180001650 (51 bytes) name=FUN_180001650 undefined8 * FUN_180001650(undefined8 *param_1,longlong param_2) { *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; __std_exception_copy(param_2 + 8); return param_1; } ================================================================== ### EXPORT FUNC 1800016b0 (19 bytes) name=FUN_1800016b0 char * FUN_1800016b0(longlong param_1) { char *pcVar1; pcVar1 = "Unknown exception"; if (*(char **)(param_1 + 8) != (char *)0x0) { pcVar1 = *(char **)(param_1 + 8); } return pcVar1; } ================================================================== ### EXPORT FUNC 1800016d0 (67 bytes) name=FUN_1800016d0 undefined8 * FUN_1800016d0(undefined8 *param_1,ulonglong param_2) { *param_1 = std::exception::vftable; __std_exception_destroy(param_1 + 1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180001720 (33 bytes) name=FUN_180001720 undefined8 * FUN_180001720(undefined8 *param_1) { param_1[2] = 0; param_1[1] = "bad array new length"; *param_1 = std::bad_array_new_length::vftable; return param_1; } ================================================================== ### EXPORT FUNC 180001750 (31 bytes) name=FUN_180001750 void FUN_180001750(void) { undefined8 local_28 [5]; FUN_180001720(local_28); /* WARNING: Subroutine does not return */ _CxxThrowException(local_28,(ThrowInfo *)&DAT_180013340); } ================================================================== ### EXPORT FUNC 180001770 (61 bytes) name=FUN_180001770 undefined8 * FUN_180001770(undefined8 *param_1,longlong param_2) { *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; __std_exception_copy(param_2 + 8); *param_1 = std::bad_array_new_length::vftable; return param_1; } ================================================================== ### EXPORT FUNC 1800017b0 (61 bytes) name=FUN_1800017b0 undefined8 * FUN_1800017b0(undefined8 *param_1,longlong param_2) { *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; __std_exception_copy(param_2 + 8); *param_1 = std::bad_alloc::vftable; return param_1; } ================================================================== ### EXPORT FUNC 1800017f0 (3068 bytes) name=FUN_1800017f0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Type propagation algorithm not settling */ void FUN_1800017f0(longlong param_1,longlong *param_2,longlong param_3) { undefined1 uVar1; undefined1 *puVar2; int iVar3; ulonglong uVar4; undefined8 uVar5; void *pvVar6; undefined1 *puVar7; byte *pbVar8; longlong lVar9; longlong lVar10; undefined1 *puVar11; uint uVar12; ulonglong uVar13; ulonglong uVar14; ulonglong uVar15; ulonglong uVar16; ulonglong uVar17; bool bVar18; undefined1 auStack_88 [32]; undefined1 local_68; uint local_64; undefined8 local_58 [2]; ulonglong local_48; ulonglong local_40; ulonglong local_38; local_38 = DAT_180015010 ^ (ulonglong)auStack_88; iVar3 = *(int *)(param_1 + 0x4c); if (iVar3 == 1) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 == 2) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 == 3) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 == 4) { uVar16 = 0; local_64 = 0; lVar9 = *param_2; if (param_2[1] != lVar9) { lVar10 = *(longlong *)(param_1 + 0x40); uVar15 = uVar16; uVar14 = uVar16; do { local_68 = *(undefined1 *)(lVar9 + uVar14); uVar4 = *(ulonglong *)(param_1 + 0x38); uVar12 = (uint)uVar15; if ((((int)lVar10 + (int)uVar4 & 0xfU) == 0) && (*(ulonglong *)(param_1 + 0x30) <= lVar10 + 0x10U >> 4)) { FUN_1800028d0(param_1 + 0x20); uVar4 = *(ulonglong *)(param_1 + 0x38); lVar10 = *(longlong *)(param_1 + 0x40); uVar12 = local_64; } uVar4 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar4; *(ulonglong *)(param_1 + 0x38) = uVar4; uVar4 = uVar4 + lVar10; lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar4 >> 4) * 8; lVar10 = *(longlong *)(param_1 + 0x28); if (*(longlong *)(lVar10 + lVar9) == 0) { uVar5 = FUN_18000c554(0x10); *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; lVar10 = *(longlong *)(param_1 + 0x28); uVar12 = local_64; } *(undefined1 *)((ulonglong)((uint)uVar4 & 0xf) + *(longlong *)(lVar9 + lVar10)) = local_68; *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; lVar10 = *(longlong *)(param_1 + 0x40); local_64 = uVar12 + 1; uVar15 = (ulonglong)local_64; uVar14 = uVar14 + 1; lVar9 = *param_2; } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); } local_48 = 0; local_40 = 0xf; local_58[0]._0_1_ = 0; uVar15 = *(ulonglong *)(param_1 + 0x38); uVar17 = *(longlong *)(param_1 + 0x40) + uVar15; uVar14 = local_48; uVar4 = local_40; for (; local_48 = uVar14, local_40 = uVar4, uVar15 != uVar17; uVar15 = uVar15 + 1) { uVar13 = (ulonglong)((uint)uVar15 & 0xf); uVar1 = *(undefined1 *) (uVar13 + *(longlong *) (*(longlong *)(param_1 + 0x28) + (*(longlong *)(param_1 + 0x30) - 1U & uVar15 >> 4) * 8)); if (uVar14 < uVar4) { local_48 = uVar14 + 1; puVar11 = (undefined1 *)local_58; if (0xf < uVar4) { puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); } puVar11[uVar14] = uVar1; puVar11[uVar14 + 1] = 0; } else { FUN_180002770(local_58,uVar13,uVar14,uVar1); } uVar14 = local_48; uVar4 = local_40; } puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); puVar7 = (undefined1 *)local_58; if (0xf < uVar4) { puVar7 = puVar11; } if ((4 < uVar14) && (pvVar6 = memchr(puVar7,0x4d,uVar14 - 4), uVar15 = uVar16, pvVar6 != (void *)0x0)) { LAB_180001ac0: do { uVar17 = uVar15 + 1; if (*(byte *)((longlong)pvVar6 + uVar15) == (&DAT_18000f758)[uVar15]) { uVar15 = uVar17; uVar12 = 0; if (uVar17 != 5) goto LAB_180001ac0; } else { uVar12 = -(uint)(*(byte *)((longlong)pvVar6 + uVar15) < (byte)(&DAT_18000f758)[uVar15]) | 1; } if (uVar12 == 0) { if ((longlong)pvVar6 - (longlong)puVar7 != -1) { *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 != 0) { std::_Throw_C_error(iVar3); } } break; } pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x4d, (size_t)(puVar7 + ((uVar14 - 4) - ((longlong)pvVar6 + 1)))); uVar15 = uVar16; if (pvVar6 == (void *)0x0) break; } while( true ); } if (uVar4 < 0x10) { return; } if (uVar4 + 1 < 0x1000) goto LAB_1800020b1; puVar7 = puVar11 + (-8 - (longlong)*(undefined1 **)(puVar11 + 0xfffffffffffffff8)); puVar11 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); } else if (iVar3 == 6) { uVar16 = 0; local_64 = 0; lVar9 = *param_2; if (param_2[1] != lVar9) { param_3 = *(longlong *)(param_1 + 0x40); uVar15 = uVar16; uVar14 = uVar16; do { local_68 = *(undefined1 *)(lVar9 + uVar14); uVar4 = *(ulonglong *)(param_1 + 0x38); uVar12 = (uint)uVar15; if ((((int)param_3 + (int)uVar4 & 0xfU) == 0) && (*(ulonglong *)(param_1 + 0x30) <= param_3 + 0x10U >> 4)) { FUN_1800028d0(param_1 + 0x20); uVar4 = *(ulonglong *)(param_1 + 0x38); param_3 = *(longlong *)(param_1 + 0x40); uVar12 = local_64; } uVar4 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar4; *(ulonglong *)(param_1 + 0x38) = uVar4; uVar4 = param_3 + uVar4; lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar4 >> 4) * 8; lVar10 = *(longlong *)(param_1 + 0x28); if (*(longlong *)(lVar10 + lVar9) == 0) { uVar5 = FUN_18000c554(0x10); *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; lVar10 = *(longlong *)(param_1 + 0x28); uVar12 = local_64; } *(undefined1 *)((ulonglong)((uint)uVar4 & 0xf) + *(longlong *)(lVar9 + lVar10)) = local_68; *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; param_3 = *(longlong *)(param_1 + 0x40); local_64 = uVar12 + 1; uVar15 = (ulonglong)local_64; uVar14 = uVar14 + 1; lVar9 = *param_2; } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); } local_48 = 0; local_40 = 0xf; local_58[0]._0_1_ = 0; uVar15 = *(ulonglong *)(param_1 + 0x38); uVar17 = *(longlong *)(param_1 + 0x40) + uVar15; uVar14 = local_48; uVar4 = local_40; for (; local_48 = uVar14, local_40 = uVar4, uVar15 != uVar17; uVar15 = uVar15 + 1) { uVar13 = (ulonglong)((uint)uVar15 & 0xf); uVar1 = *(undefined1 *) (uVar13 + *(longlong *) (*(longlong *)(param_1 + 0x28) + (uVar15 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); if (uVar14 < uVar4) { local_48 = uVar14 + 1; puVar11 = (undefined1 *)local_58; if (0xf < uVar4) { puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); } puVar11[uVar14] = uVar1; puVar11[uVar14 + 1] = 0; } else { FUN_180002770(local_58,uVar13,param_3,uVar1); } uVar14 = local_48; uVar4 = local_40; } puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); puVar7 = (undefined1 *)local_58; if (0xf < uVar4) { puVar7 = puVar11; } if ((4 < uVar14) && (pvVar6 = memchr(puVar7,0x4d,uVar14 - 4), uVar15 = uVar16, pvVar6 != (void *)0x0)) { LAB_180001d40: do { uVar17 = uVar15 + 1; if (*(byte *)((longlong)pvVar6 + uVar15) == (&DAT_18000f758)[uVar15]) { uVar15 = uVar17; uVar12 = 0; if (uVar17 != 5) goto LAB_180001d40; } else { uVar12 = -(uint)(*(byte *)((longlong)pvVar6 + uVar15) < (byte)(&DAT_18000f758)[uVar15]) | 1; } if (uVar12 == 0) { if ((longlong)pvVar6 - (longlong)puVar7 != -1) { puVar7 = (undefined1 *)local_58; if (0xf < uVar4) { puVar7 = puVar11; } if (2 < uVar14) { pbVar8 = memchr(puVar7,0x76,uVar14 - 2); goto joined_r0x000180001dc2; } } break; } pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x4d, (size_t)(puVar7 + ((uVar14 - 4) - ((longlong)pvVar6 + 1)))); uVar15 = uVar16; if (pvVar6 == (void *)0x0) break; } while( true ); } LAB_180001e27: if (uVar4 < 0x10) { return; } if (uVar4 + 1 < 0x1000) goto LAB_1800020b1; puVar7 = puVar11 + (-8 - (longlong)*(undefined1 **)(puVar11 + 0xfffffffffffffff8)); puVar11 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); } else { if (iVar3 == 5) { uVar16 = 0; local_64 = 0; lVar9 = *param_2; if (param_2[1] != lVar9) { param_3 = *(longlong *)(param_1 + 0x40); uVar15 = uVar16; do { local_68 = *(undefined1 *)(lVar9 + uVar15); uVar14 = *(ulonglong *)(param_1 + 0x38); uVar12 = (uint)uVar16; if ((((int)param_3 + (int)uVar14 & 0xfU) == 0) && (*(ulonglong *)(param_1 + 0x30) <= param_3 + 0x10U >> 4)) { FUN_1800028d0(param_1 + 0x20); uVar14 = *(ulonglong *)(param_1 + 0x38); param_3 = *(longlong *)(param_1 + 0x40); uVar12 = local_64; } uVar14 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar14; *(ulonglong *)(param_1 + 0x38) = uVar14; uVar14 = param_3 + uVar14; lVar9 = (*(longlong *)(param_1 + 0x30) - 1U & uVar14 >> 4) * 8; lVar10 = *(longlong *)(param_1 + 0x28); if (*(longlong *)(lVar10 + lVar9) == 0) { uVar5 = FUN_18000c554(0x10); *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; lVar10 = *(longlong *)(param_1 + 0x28); uVar12 = local_64; } *(undefined1 *)((ulonglong)((uint)uVar14 & 0xf) + *(longlong *)(lVar9 + lVar10)) = local_68; *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; param_3 = *(longlong *)(param_1 + 0x40); local_64 = uVar12 + 1; uVar16 = (ulonglong)local_64; uVar15 = uVar15 + 1; lVar9 = *param_2; } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); } local_48 = 0; local_40 = 0xf; local_58[0]._0_1_ = 0; uVar16 = *(ulonglong *)(param_1 + 0x38); uVar4 = *(longlong *)(param_1 + 0x40) + uVar16; uVar15 = local_48; uVar14 = local_40; for (; local_48 = uVar15, local_40 = uVar14, uVar16 != uVar4; uVar16 = uVar16 + 1) { uVar17 = (ulonglong)((uint)uVar16 & 0xf); uVar1 = *(undefined1 *) (uVar17 + *(longlong *) (*(longlong *)(param_1 + 0x28) + (uVar16 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); if (uVar15 < uVar14) { local_48 = uVar15 + 1; puVar11 = (undefined1 *)local_58; if (0xf < uVar14) { puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); } puVar11[uVar15] = uVar1; puVar11[uVar15 + 1] = 0; } else { FUN_180002770(local_58,uVar17,param_3,uVar1); } uVar15 = local_48; uVar14 = local_40; } puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); puVar7 = (undefined1 *)local_58; if (0xf < uVar14) { puVar7 = puVar11; } if (0x16 < uVar15) { for (pvVar6 = memchr(puVar7,0x55,uVar15 - 0x16); pvVar6 != (void *)0x0; pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x55, (size_t)(puVar7 + ((uVar15 - 0x16) - ((longlong)pvVar6 + 1))))) { iVar3 = memcmp(pvVar6,"Use Ymodem to send file",0x17); if (iVar3 == 0) { if ((longlong)pvVar6 - (longlong)puVar7 != -1) { *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 != 0) { std::_Throw_C_error(iVar3); } } break; } } } if (uVar14 < 0x10) { return; } if (uVar14 + 1 < 0x1000) goto LAB_1800020b1; puVar2 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); lVar9 = (longlong)puVar11 - (longlong)puVar2; } else { if (iVar3 == 7) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 == 8) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 == 9) { if (param_2[1] - *param_2 != 1) { return; } if (*(char *)*param_2 != '\x06') { return; } *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 == 0) { return; } std::_Throw_C_error(iVar3); return; } if (iVar3 != 10) { return; } uVar16 = 0; local_64 = 0; lVar9 = *param_2; if (param_2[1] != lVar9) { lVar10 = *(longlong *)(param_1 + 0x40); uVar15 = uVar16; do { local_68 = *(undefined1 *)(lVar9 + uVar15); uVar14 = *(ulonglong *)(param_1 + 0x38); uVar12 = (uint)uVar16; if ((((int)uVar14 + (int)lVar10 & 0xfU) == 0) && (*(ulonglong *)(param_1 + 0x30) <= lVar10 + 0x10U >> 4)) { FUN_1800028d0(param_1 + 0x20); uVar14 = *(ulonglong *)(param_1 + 0x38); lVar10 = *(longlong *)(param_1 + 0x40); uVar12 = local_64; } uVar14 = *(longlong *)(param_1 + 0x30) * 0x10 - 1U & uVar14; *(ulonglong *)(param_1 + 0x38) = uVar14; uVar14 = uVar14 + lVar10; lVar9 = (uVar14 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8; lVar10 = *(longlong *)(param_1 + 0x28); if (*(longlong *)(lVar10 + lVar9) == 0) { uVar5 = FUN_18000c554(0x10); *(undefined8 *)(lVar9 + *(longlong *)(param_1 + 0x28)) = uVar5; lVar10 = *(longlong *)(param_1 + 0x28); uVar12 = local_64; } *(undefined1 *)((ulonglong)((uint)uVar14 & 0xf) + *(longlong *)(lVar10 + lVar9)) = local_68; *(longlong *)(param_1 + 0x40) = *(longlong *)(param_1 + 0x40) + 1; lVar10 = *(longlong *)(param_1 + 0x40); local_64 = uVar12 + 1; uVar16 = (ulonglong)local_64; uVar15 = uVar15 + 1; lVar9 = *param_2; } while ((ulonglong)(longlong)(int)local_64 < (ulonglong)(param_2[1] - lVar9)); } local_48 = 0; local_40 = 0xf; local_58[0]._0_1_ = 0; uVar16 = *(ulonglong *)(param_1 + 0x38); uVar4 = *(longlong *)(param_1 + 0x40) + uVar16; uVar15 = local_48; uVar14 = local_40; for (; local_48 = uVar15, local_40 = uVar14, uVar16 != uVar4; uVar16 = uVar16 + 1) { uVar17 = (ulonglong)((uint)uVar16 & 0xf); uVar1 = *(undefined1 *) (uVar17 + *(longlong *) (*(longlong *)(param_1 + 0x28) + (uVar16 >> 4 & *(longlong *)(param_1 + 0x30) - 1U) * 8)); if (uVar15 < uVar14) { local_48 = uVar15 + 1; puVar11 = (undefined1 *)local_58; if (0xf < uVar14) { puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); } puVar11[uVar15] = uVar1; puVar11[uVar15 + 1] = 0; } else { FUN_180002770(local_58,uVar17,lVar9,uVar1); } uVar15 = local_48; uVar14 = local_40; } puVar11 = (undefined1 *)CONCAT71(local_58[0]._1_7_,(undefined1)local_58[0]); puVar7 = (undefined1 *)local_58; if (0xf < uVar14) { puVar7 = puVar11; } if (0x25 < uVar15) { for (pvVar6 = memchr(puVar7,0x46,uVar15 - 0x25); pvVar6 != (void *)0x0; pvVar6 = memchr((void *)((longlong)pvVar6 + 1),0x46, (size_t)(puVar7 + ((uVar15 - 0x25) - ((longlong)pvVar6 + 1))))) { iVar3 = memcmp(pvVar6,"Firmware upgrade success, rebooting...",0x26); if (iVar3 == 0) { if ((longlong)pvVar6 - (longlong)puVar7 != -1) { *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 != 0) { std::_Throw_C_error(iVar3); } } break; } } } if (uVar14 < 0x10) { return; } if (uVar14 + 1 < 0x1000) goto LAB_1800020b1; puVar2 = *(undefined1 **)(puVar11 + 0xfffffffffffffff8); lVar9 = (longlong)puVar11 - (longlong)puVar2; } puVar7 = (undefined1 *)(lVar9 - 8); puVar11 = puVar2; } if ((undefined1 *)0x1f < puVar7) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } LAB_1800020b1: free(puVar11); return; joined_r0x000180001dc2: if (pbVar8 == (byte *)0x0) goto LAB_180001e27; bVar18 = *pbVar8 < 0x76; if (((*pbVar8 == 0x76) && (bVar18 = pbVar8[1] < 0x65, pbVar8[1] == 0x65)) && (bVar18 = pbVar8[2] < 0x72, pbVar8[2] == 0x72)) { uVar12 = 0; } else { uVar12 = -(uint)bVar18 | 1; } if (uVar12 == 0) { if ((longlong)pbVar8 - (longlong)puVar7 != -1) { *(undefined1 *)(param_1 + 0x48) = 1; iVar3 = _Cnd_broadcast(param_1 + 0x58); if (iVar3 != 0) { std::_Throw_C_error(iVar3); } } goto LAB_180001e27; } pbVar8 = memchr(pbVar8 + 1,0x76,(size_t)(puVar7 + ((uVar14 - 2) - (longlong)(pbVar8 + 1)))); goto joined_r0x000180001dc2; } ================================================================== ### EXPORT FUNC 1800023f0 (39 bytes) name=FUN_1800023f0 void FUN_1800023f0(undefined8 *param_1) { void *_Memory; FUN_180002550((longlong)param_1); _Memory = (void *)*param_1; *param_1 = 0; free(_Memory); return; } ================================================================== ### EXPORT FUNC 180002420 (87 bytes) name=FUN_180002420 void FUN_180002420(longlong *param_1) { void *pvVar1; void *_Memory; pvVar1 = (void *)*param_1; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); *param_1 = 0; param_1[1] = 0; param_1[2] = 0; } return; } ================================================================== ### EXPORT FUNC 180002480 (38 bytes) name=FUN_180002480 void FUN_180002480(undefined8 *param_1) { int iVar1; if (*(char *)(param_1 + 1) != '\0') { iVar1 = _Mtx_unlock(*param_1); if (iVar1 != 0) { std::_Throw_C_error(iVar1); } } return; } ================================================================== ### EXPORT FUNC 1800024b0 (94 bytes) name=FUN_1800024b0 void FUN_1800024b0(longlong *param_1) { void *pvVar1; void *_Memory; if (0xf < (ulonglong)param_1[3]) { pvVar1 = (void *)*param_1; _Memory = pvVar1; if ((0xfff < param_1[3] + 1U) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[2] = 0; param_1[3] = 0xf; *(undefined1 *)param_1 = 0; return; } ================================================================== ### EXPORT FUNC 180002510 (59 bytes) name=FUN_180002510 longlong * FUN_180002510(longlong *param_1,void *param_2) { size_t sVar1; param_1[2] = 0; param_1[3] = 0xf; sVar1 = 0xffffffffffffffff; *(undefined1 *)param_1 = 0; do { sVar1 = sVar1 + 1; } while (*(char *)((longlong)param_2 + sVar1) != '\0'); FUN_180002610(param_1,param_2,sVar1); return param_1; } ================================================================== ### EXPORT FUNC 180002550 (180 bytes) name=FUN_180002550 void FUN_180002550(longlong param_1) { void *pvVar1; void *_Memory; longlong lVar2; lVar2 = *(longlong *)(param_1 + 0x20); if (lVar2 != 0) { do { lVar2 = lVar2 + -1; *(longlong *)(param_1 + 0x20) = lVar2; } while (lVar2 != 0); *(undefined8 *)(param_1 + 0x18) = 0; } lVar2 = *(longlong *)(param_1 + 0x10); while (lVar2 != 0) { lVar2 = lVar2 + -1; pvVar1 = *(void **)(*(longlong *)(param_1 + 8) + lVar2 * 8); if (pvVar1 != (void *)0x0) { free(pvVar1); } } pvVar1 = *(void **)(param_1 + 8); if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *(undefined8 *)(param_1 + 0x10) = 0; *(undefined8 *)(param_1 + 8) = 0; return; } ================================================================== ### EXPORT FUNC 180002610 (346 bytes) name=FUN_180002610 longlong * FUN_180002610(longlong *param_1,void *param_2,size_t param_3) { ulonglong uVar1; ulonglong uVar2; void *pvVar3; longlong lVar4; ulonglong uVar5; size_t sVar6; void *_Memory; void *_Dst; longlong *_Dst_00; ulonglong uVar7; uVar2 = param_1[3]; if (param_3 <= uVar2) { _Dst_00 = param_1; if (0xf < uVar2) { _Dst_00 = (longlong *)*param_1; } param_1[2] = param_3; memmove(_Dst_00,param_2,param_3); *(undefined1 *)(param_3 + (longlong)_Dst_00) = 0; return param_1; } if (0x7fffffffffffffff < param_3) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar5 = param_3 | 0xf; uVar7 = 0x7fffffffffffffff; if (((uVar5 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && (uVar1 = (uVar2 >> 1) + uVar2, uVar7 = uVar5, uVar5 < uVar1)) { uVar7 = uVar1; } sVar6 = uVar7 + 1; if (uVar7 == 0xffffffffffffffff) { sVar6 = 0xffffffffffffffff; } if (sVar6 < 0x1000) { if (sVar6 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(sVar6); } } else { if (sVar6 + 0x27 <= sVar6) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar4 = FUN_18000c554(sVar6 + 0x27); if (lVar4 == 0) goto LAB_18000275a; _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar4; } param_1[2] = param_3; param_1[3] = uVar7; memcpy(_Dst,param_2,param_3); *(undefined1 *)(param_3 + (longlong)_Dst) = 0; if (0xf < uVar2) { pvVar3 = (void *)*param_1; _Memory = pvVar3; if ((0xfff < uVar2 + 1) && (_Memory = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { LAB_18000275a: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = (longlong)_Dst; return param_1; } ================================================================== ### EXPORT FUNC 180002770 (348 bytes) name=FUN_180002770 undefined8 * FUN_180002770(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined1 param_4) { ulonglong uVar1; size_t _Size; ulonglong uVar2; void *_Src; longlong lVar3; ulonglong uVar4; size_t sVar5; ulonglong uVar6; void *_Memory; void *_Dst; _Size = param_1[2]; if (_Size == 0x7fffffffffffffff) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar2 = param_1[3]; uVar4 = _Size + 1 | 0xf; uVar6 = 0x7fffffffffffffff; if (((uVar4 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && (uVar1 = (uVar2 >> 1) + uVar2, uVar6 = uVar4, uVar4 < uVar1)) { uVar6 = uVar1; } sVar5 = uVar6 + 1; if (uVar6 == 0xffffffffffffffff) { sVar5 = 0xffffffffffffffff; } if (sVar5 < 0x1000) { if (sVar5 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(sVar5); } } else { if (sVar5 + 0x27 <= sVar5) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar3 = FUN_18000c554(sVar5 + 0x27); if (lVar3 == 0) goto LAB_18000288c; _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar3; } param_1[2] = _Size + 1; param_1[3] = uVar6; if (uVar2 < 0x10) { memcpy(_Dst,param_1,_Size); *(undefined1 *)((longlong)_Dst + _Size) = param_4; *(undefined1 *)((longlong)_Dst + _Size + 1) = 0; } else { _Src = (void *)*param_1; memcpy(_Dst,_Src,_Size); *(undefined1 *)((longlong)_Dst + _Size) = param_4; *(undefined1 *)((longlong)_Dst + _Size + 1) = 0; _Memory = _Src; if ((0xfff < uVar2 + 1) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { LAB_18000288c: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = _Dst; return param_1; } ================================================================== ### EXPORT FUNC 1800028d0 (469 bytes) name=FUN_1800028d0 void FUN_1800028d0(longlong param_1) { code *pcVar1; ulonglong uVar2; longlong lVar3; void *_Memory; size_t sVar4; void *pvVar5; size_t sVar6; ulonglong uVar7; void *_Dst; ulonglong uVar8; uVar8 = *(ulonglong *)(param_1 + 0x10); uVar2 = 1; if (uVar8 != 0) { uVar2 = uVar8; } for (; (uVar7 = uVar2 - uVar8, uVar7 == 0 || (uVar2 < 8)); uVar2 = uVar2 * 2) { if (0x7ffffffffffffff - uVar2 < uVar2) { FUN_180002b60(); pcVar1 = (code *)swi(3); (*pcVar1)(); return; } } uVar8 = *(ulonglong *)(param_1 + 0x18) >> 4; if (0x1fffffffffffffff < uVar2) { LAB_180002a9b: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar2 = uVar2 * 8; if (uVar2 < 0x1000) { if (uVar2 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(uVar2); } } else { if (uVar2 + 0x27 <= uVar2) goto LAB_180002a9b; lVar3 = FUN_18000c554(uVar2 + 0x27); if (lVar3 == 0) goto LAB_180002a94; _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar3; } sVar6 = uVar8 * 8; pvVar5 = (void *)(*(longlong *)(param_1 + 8) + sVar6); sVar4 = (*(longlong *)(param_1 + 0x10) * 8 - (longlong)pvVar5) + *(longlong *)(param_1 + 8); memmove((void *)(sVar6 + (longlong)_Dst),pvVar5,sVar4); pvVar5 = (void *)(sVar4 + (longlong)(sVar6 + (longlong)_Dst)); if (uVar7 < uVar8) { sVar4 = uVar7 * 8; memmove(pvVar5,*(void **)(param_1 + 8),sVar4); pvVar5 = (void *)(sVar4 + *(longlong *)(param_1 + 8)); sVar6 = (*(longlong *)(param_1 + 8) - (longlong)pvVar5) + sVar6; memmove(_Dst,pvVar5,sVar6); pvVar5 = (void *)(sVar6 + (longlong)_Dst); } else { memmove(pvVar5,*(void **)(param_1 + 8),sVar6); memset((void *)(sVar6 + (longlong)pvVar5),0,(uVar7 - uVar8) * 8); pvVar5 = _Dst; sVar4 = sVar6; } memset(pvVar5,0,sVar4); pvVar5 = *(void **)(param_1 + 8); if (pvVar5 != (void *)0x0) { _Memory = pvVar5; if ((0xfff < (ulonglong)(*(longlong *)(param_1 + 0x10) << 3)) && (_Memory = *(void **)((longlong)pvVar5 + -8), 0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)_Memory)))) { LAB_180002a94: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *(longlong *)(param_1 + 0x10) = *(longlong *)(param_1 + 0x10) + uVar7; *(void **)(param_1 + 8) = _Dst; return; } ================================================================== ### EXPORT FUNC 180002ab0 (134 bytes) name=FUN_180002ab0 void FUN_180002ab0(ulonglong *param_1,ulonglong param_2) { longlong lVar1; ulonglong uVar2; if (0x7fffffffffffffff < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } if (param_2 < 0x1000) { if (param_2 == 0) { uVar2 = 0; } else { uVar2 = FUN_18000c554(param_2); } } else { if (param_2 + 0x27 <= param_2) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar1 = FUN_18000c554(param_2 + 0x27); if (lVar1 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } uVar2 = lVar1 + 0x27U & 0xffffffffffffffe0; *(longlong *)(uVar2 - 8) = lVar1; } *param_1 = uVar2; param_1[1] = uVar2; param_1[2] = uVar2 + param_2; return; } ================================================================== ### EXPORT FUNC 180002b40 (18 bytes) name=FUN_180002b40 void FUN_180002b40(void) { code *pcVar1; std::_Xlength_error("string too long"); pcVar1 = (code *)swi(3); (*pcVar1)(); return; } ================================================================== ### EXPORT FUNC 180002b60 (18 bytes) name=FUN_180002b60 void FUN_180002b60(void) { code *pcVar1; std::_Xlength_error("deque too long"); pcVar1 = (code *)swi(3); (*pcVar1)(); return; } ================================================================== ### EXPORT FUNC 180002b80 (18 bytes) name=FUN_180002b80 void FUN_180002b80(void) { code *pcVar1; std::_Xlength_error("vector too long"); pcVar1 = (code *)swi(3); (*pcVar1)(); return; } ================================================================== ### EXPORT FUNC 180002ba0 (239 bytes) name=FUN_180002ba0 void FUN_180002ba0(ulonglong *param_1,ulonglong param_2) { void *pvVar1; longlong lVar2; void *_Memory; ulonglong uVar3; ulonglong uVar4; ulonglong uVar5; if (0x7fffffffffffffff < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } pvVar1 = (void *)*param_1; uVar3 = param_1[2] - (longlong)pvVar1; uVar5 = param_2; if ((uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1)) && (uVar5 = (uVar3 >> 1) + uVar3, uVar5 < param_2)) { uVar5 = param_2; } uVar4 = 0; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < uVar3) && (_Memory = *(void **)((longlong)pvVar1 - 8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) goto LAB_180002c50; free(_Memory); *param_1 = 0; param_1[1] = 0; param_1[2] = 0; } if (uVar5 < 0x1000) { if (uVar5 != 0) { uVar4 = FUN_18000c554(uVar5); } } else { if (uVar5 + 0x27 <= uVar5) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar2 = FUN_18000c554(uVar5 + 0x27); if (lVar2 == 0) { LAB_180002c50: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } uVar4 = lVar2 + 0x27U & 0xffffffffffffffe0; *(longlong *)(uVar4 - 8) = lVar2; } *param_1 = uVar4; param_1[1] = uVar4; param_1[2] = uVar4 + uVar5; return; } ================================================================== ### EXPORT FUNC 180002ca0 (248 bytes) name=FUN_180002ca0 void FUN_180002ca0(longlong *param_1) { void *pvVar1; void *pvVar2; if (0xf < (ulonglong)param_1[0xb]) { pvVar1 = (void *)param_1[8]; pvVar2 = pvVar1; if ((0xfff < param_1[0xb] + 1U) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180002d92; free(pvVar2); } param_1[10] = 0; param_1[0xb] = 0xf; *(undefined1 *)(param_1 + 8) = 0; if (0xf < (ulonglong)param_1[7]) { pvVar1 = (void *)param_1[4]; pvVar2 = pvVar1; if ((0xfff < param_1[7] + 1U) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180002d92; free(pvVar2); } param_1[6] = 0; param_1[7] = 0xf; *(undefined1 *)(param_1 + 4) = 0; if (0xf < (ulonglong)param_1[3]) { pvVar1 = (void *)*param_1; pvVar2 = pvVar1; if ((0xfff < param_1[3] + 1U) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { LAB_180002d92: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar2); } param_1[2] = 0; param_1[3] = 0xf; *(undefined1 *)param_1 = 0; return; } ================================================================== ### EXPORT FUNC 180002da0 (177 bytes) name=FUN_180002da0 void FUN_180002da0(longlong *param_1) { longlong *plVar1; longlong *plVar2; plVar1 = (longlong *)*param_1; if (plVar1 != (longlong *)0x0) { plVar2 = (longlong *)param_1[1]; if (plVar1 != plVar2) { do { FUN_180002ca0(plVar1); plVar1 = plVar1 + 0xc; } while (plVar1 != plVar2); plVar1 = (longlong *)*param_1; } plVar2 = plVar1; if ((0xfff < (ulonglong)(((param_1[2] - (longlong)plVar1) / 0x60) * 0x60)) && (plVar2 = (longlong *)plVar1[-1], 0x1f < (ulonglong)((longlong)plVar1 + (-8 - (longlong)plVar2)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(plVar2); *param_1 = 0; param_1[1] = 0; param_1[2] = 0; } return; } ================================================================== ### EXPORT FUNC 180002e60 (201 bytes) name=FUN_180002e60 undefined8 * FUN_180002e60(undefined8 *param_1,undefined8 *param_2) { ulonglong uVar1; ulonglong uVar2; undefined8 uVar3; longlong lVar4; void *_Dst; ulonglong uVar5; _Dst = (void *)0x0; param_1[2] = 0; param_1[3] = 0; uVar2 = param_2[2]; if (0xf < (ulonglong)param_2[3]) { param_2 = (undefined8 *)*param_2; } if (uVar2 < 0x10) { uVar3 = param_2[1]; uVar5 = 0xf; *param_1 = *param_2; param_1[1] = uVar3; } else { uVar5 = uVar2 | 0xf; if (0x7fffffffffffffff < uVar5) { uVar5 = 0x7fffffffffffffff; } uVar1 = uVar5 + 1; if (uVar1 < 0x1000) { if (uVar1 != 0) { _Dst = (void *)FUN_18000c554(uVar1); } } else { if (uVar5 + 0x28 <= uVar1) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar4 = FUN_18000c554(uVar5 + 0x28); if (lVar4 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar4; } *param_1 = _Dst; memcpy(_Dst,param_2,uVar2 + 1); } param_1[2] = uVar2; param_1[3] = uVar5; return param_1; } ================================================================== ### EXPORT FUNC 180002f30 (49 bytes) name=FUN_180002f30 void FUN_180002f30(undefined8 param_1,longlong *param_2,longlong *param_3) { for (; param_2 != param_3; param_2 = param_2 + 0xc) { FUN_180002ca0(param_2); } return; } ================================================================== ### EXPORT FUNC 180002f70 (66 bytes) name=deallocate /* Library Function - Multiple Matches With Same Base Name public: void __cdecl std::allocator::deallocate(struct `protected: int __cdecl GSI1::readHash(unsigned short,long,long) __ptr64'::`2'::FileSymbolInfo * __ptr64 const,unsigned __int64) __ptr64 public: void __cdecl std::allocator::deallocate(struct GSISymbolEntry * __ptr64 const,unsigned __int64) __ptr64 Library: Visual Studio 2019 Release */ void deallocate(undefined8 param_1,void *param_2,longlong param_3) { void *_Memory; _Memory = param_2; if ((0xfff < (ulonglong)(param_3 * 0x60)) && (_Memory = *(void **)((longlong)param_2 + -8), 0x1f < (ulonglong)((longlong)param_2 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); return; } ================================================================== ### EXPORT FUNC 180002fc0 (8 bytes) name=FUN_180002fc0 undefined * FUN_180002fc0(void) { return &DAT_180015fe0; } ================================================================== ### EXPORT FUNC 180002fd0 (2014 bytes) name=FUN_180002fd0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ longlong * FUN_180002fd0(longlong *param_1) { undefined8 *puVar1; code *pcVar2; void *pvVar3; BOOL BVar4; LSTATUS LVar5; uint uVar6; int iVar7; HDEVINFO DeviceInfoSet; HKEY hKey; wchar_t *pwVar8; longlong *plVar9; void *pvVar10; ulonglong uVar11; WCHAR *pWVar12; DWORD MemberIndex; undefined1 auStackY_7c8 [32]; WCHAR local_780; undefined6 uStack_77e; undefined8 local_770; ulonglong local_768; WCHAR local_760; undefined6 uStack_75e; undefined8 local_750; ulonglong local_748; longlong *local_740; undefined8 *local_738; DWORD local_730; DWORD local_72c; DWORD local_728 [2]; longlong local_720 [2]; size_t local_710; ulonglong local_708; longlong local_700 [2]; size_t local_6f0; ulonglong local_6e8; longlong local_6e0 [2]; size_t local_6d0; ulonglong local_6c8; _SP_DEVINFO_DATA local_6c0; undefined1 local_698 [16]; undefined8 local_688; undefined8 local_680; undefined1 local_678 [16]; undefined8 local_668; undefined8 local_660; undefined1 local_658 [16]; undefined8 local_648; undefined8 local_640; wchar_t local_638 [256]; short local_438 [256]; short local_238 [256]; ulonglong local_38; local_38 = DAT_180015010 ^ (ulonglong)auStackY_7c8; MemberIndex = 0; *param_1 = 0; param_1[1] = 0; *param_1 = 0; param_1[1] = 0; param_1[2] = 0; local_740 = param_1; DeviceInfoSet = SetupDiGetClassDevsW((GUID *)&DAT_18000f7e8,(PCWSTR)0x0,(HWND)0x0,2); local_6c0.cbSize = 0x20; do { do { do { BVar4 = SetupDiEnumDeviceInfo(DeviceInfoSet,MemberIndex,&local_6c0); if (BVar4 == 0) { SetupDiDestroyDeviceInfoList(DeviceInfoSet); return param_1; } MemberIndex = MemberIndex + 1; hKey = SetupDiOpenDevRegKey(DeviceInfoSet,&local_6c0,1,0,1,0x20019); local_730 = 0x100; LVar5 = RegQueryValueExW(hKey,L"PortName",(LPDWORD)0x0,(LPDWORD)0x0,(LPBYTE)local_638, &local_730); RegCloseKey(hKey); } while (LVar5 != 0); uVar6 = local_730 - 1; if (uVar6 < 0x100) { if (0x1ff < (ulonglong)uVar6 * 2) goto LAB_1800037ae; local_638[uVar6] = L'\0'; } else { local_638[0] = L'\0'; } pwVar8 = wcsstr(local_638,L"LPT"); } while (pwVar8 != (wchar_t *)0x0); local_72c = 0; BVar4 = SetupDiGetDeviceRegistryPropertyW (DeviceInfoSet,&local_6c0,0xc,(PDWORD)0x0,(PBYTE)local_438,0x100,&local_72c); if ((BVar4 == 1) && (local_72c != 0)) { if (0x1ff < (ulonglong)(local_72c - 1) * 2) goto LAB_1800037ae; local_438[local_72c - 1] = 0; } else { local_438[0] = 0; } local_728[0] = 0; BVar4 = SetupDiGetDeviceRegistryPropertyW (DeviceInfoSet,&local_6c0,1,(PDWORD)0x0,(PBYTE)local_238,0x100,local_728); if ((BVar4 == 1) && (local_728[0] != 0)) { if (0x1ff < (ulonglong)(local_728[0] - 1) * 2) { LAB_1800037ae: __report_rangecheckfailure(); pcVar2 = (code *)swi(3); plVar9 = (longlong *)(*pcVar2)(); return plVar9; } local_238[local_728[0] - 1] = 0; } else { local_238[0] = 0; } local_770 = 0; local_768 = 7; local_780 = L'\0'; uVar11 = 0xffffffffffffffff; do { uVar11 = uVar11 + 1; } while (local_638[uVar11] != L'\0'); FUN_180003830((longlong *)&local_780,local_638,uVar11); pWVar12 = &local_780; if (7 < local_768) { pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); } iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 ); local_6d0 = 0; local_6c8 = 0xf; local_6e0[0]._0_1_ = 0; FUN_1800039a0(local_6e0,(longlong)iVar7); plVar9 = local_6e0; if (0xf < local_6c8) { plVar9 = (longlong *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); } pWVar12 = &local_780; if (7 < local_768) { pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); } WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) ; if (7 < local_768) { pvVar3 = (void *)CONCAT62(uStack_77e,local_780); pvVar10 = pvVar3; if ((0xfff < local_768 * 2 + 2) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } local_770 = 0; local_768 = 7; local_780 = L'\0'; local_750 = 0; local_748 = 7; local_760 = L'\0'; uVar11 = 0xffffffffffffffff; do { uVar11 = uVar11 + 1; } while (local_438[uVar11] != 0); FUN_180003830((longlong *)&local_760,local_438,uVar11); pWVar12 = &local_760; if (7 < local_748) { pWVar12 = (LPCWSTR)CONCAT62(uStack_75e,local_760); } iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_750,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 ); local_6f0 = 0; local_6e8 = 0xf; local_700[0]._0_1_ = 0; FUN_1800039a0(local_700,(longlong)iVar7); plVar9 = local_700; if (0xf < local_6e8) { plVar9 = (longlong *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); } pWVar12 = &local_760; if (7 < local_748) { pWVar12 = (LPCWSTR)CONCAT62(uStack_75e,local_760); } WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_750,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) ; if (7 < local_748) { pvVar3 = (void *)CONCAT62(uStack_75e,local_760); pvVar10 = pvVar3; if ((0xfff < local_748 * 2 + 2) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } local_750 = 0; local_748 = 7; local_760 = L'\0'; local_770 = 0; local_768 = 7; local_780 = L'\0'; uVar11 = 0xffffffffffffffff; do { uVar11 = uVar11 + 1; } while (local_238[uVar11] != 0); FUN_180003830((longlong *)&local_780,local_238,uVar11); pWVar12 = &local_780; if (7 < local_768) { pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); } iVar7 = WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0 ); local_710 = 0; local_708 = 0xf; local_720[0]._0_1_ = 0; FUN_1800039a0(local_720,(longlong)iVar7); plVar9 = local_720; if (0xf < local_708) { plVar9 = (longlong *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); } pWVar12 = &local_780; if (7 < local_768) { pWVar12 = (LPCWSTR)CONCAT62(uStack_77e,local_780); } WideCharToMultiByte(0xfde9,0,pWVar12,(int)local_770,(LPSTR)plVar9,iVar7,(LPCSTR)0x0,(LPBOOL)0x0) ; if (7 < local_768) { pvVar3 = (void *)CONCAT62(uStack_77e,local_780); pvVar10 = pvVar3; if ((0xfff < local_768 * 2 + 2) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } local_688 = 0; local_680 = 0xf; local_698[0] = 0; local_668 = 0; local_660 = 0xf; local_678[0] = 0; local_648 = 0; local_640 = 0xf; local_658[0] = 0; plVar9 = local_6e0; if (0xf < local_6c8) { plVar9 = (longlong *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); } FUN_180002610((longlong *)local_698,plVar9,local_6d0); plVar9 = local_700; if (0xf < local_6e8) { plVar9 = (longlong *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); } FUN_180002610((longlong *)local_678,plVar9,local_6f0); plVar9 = local_720; if (0xf < local_708) { plVar9 = (longlong *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); } FUN_180002610((longlong *)local_658,plVar9,local_710); puVar1 = (undefined8 *)param_1[1]; if (puVar1 == (undefined8 *)param_1[2]) { FUN_180003b00(param_1,puVar1,(undefined8 *)local_698); } else { local_738 = puVar1; FUN_180002e60(puVar1,(undefined8 *)local_698); FUN_180002e60(puVar1 + 4,(undefined8 *)local_678); FUN_180002e60(puVar1 + 8,(undefined8 *)local_658); param_1[1] = param_1[1] + 0x60; } FUN_180002ca0((longlong *)local_698); if (0xf < local_708) { pvVar3 = (void *)CONCAT71(local_720[0]._1_7_,(undefined1)local_720[0]); pvVar10 = pvVar3; if ((0xfff < local_708 + 1) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } local_710 = 0; local_708 = 0xf; local_720[0]._0_1_ = 0; if (0xf < local_6e8) { pvVar3 = (void *)CONCAT71(local_700[0]._1_7_,(undefined1)local_700[0]); pvVar10 = pvVar3; if ((0xfff < local_6e8 + 1) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } local_6f0 = 0; local_6e8 = 0xf; local_700[0]._0_1_ = 0; if (0xf < local_6c8) { pvVar3 = (void *)CONCAT71(local_6e0[0]._1_7_,(undefined1)local_6e0[0]); pvVar10 = pvVar3; if ((0xfff < local_6c8 + 1) && (pvVar10 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } } while( true ); } ================================================================== ### EXPORT FUNC 1800037c0 (97 bytes) name=FUN_1800037c0 void FUN_1800037c0(longlong *param_1) { void *pvVar1; void *_Memory; if (7 < (ulonglong)param_1[3]) { pvVar1 = (void *)*param_1; _Memory = pvVar1; if ((0xfff < param_1[3] * 2 + 2U) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[3] = 7; param_1[2] = 0; *(undefined2 *)param_1 = 0; return; } ================================================================== ### EXPORT FUNC 180003830 (358 bytes) name=FUN_180003830 longlong * FUN_180003830(longlong *param_1,void *param_2,ulonglong param_3) { ulonglong uVar1; ulonglong uVar2; void *pvVar3; longlong lVar4; ulonglong uVar5; void *_Memory; ulonglong uVar6; longlong *_Dst; void *_Dst_00; uVar2 = param_1[3]; if (uVar2 < param_3) { if (0x7ffffffffffffffe < param_3) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar5 = param_3 | 7; uVar6 = 0x7ffffffffffffffe; if (((uVar5 < 0x7fffffffffffffff) && (uVar2 <= 0x7ffffffffffffffe - (uVar2 >> 1))) && (uVar1 = (uVar2 >> 1) + uVar2, uVar6 = uVar5, uVar5 < uVar1)) { uVar6 = uVar1; } if (0x7fffffffffffffff < uVar6 + 1) { LAB_180003993: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar5 = (uVar6 + 1) * 2; _Dst_00 = (void *)0x0; if (uVar5 < 0x1000) { if (uVar5 != 0) { _Dst_00 = (void *)FUN_18000c554(uVar5); } } else { if (uVar5 + 0x27 <= uVar5) goto LAB_180003993; lVar4 = FUN_18000c554(uVar5 + 0x27); if (lVar4 == 0) goto LAB_180003986; _Dst_00 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst_00 - 8) = lVar4; } param_1[3] = uVar6; param_1[2] = param_3; memcpy(_Dst_00,param_2,param_3 * 2); *(undefined2 *)(param_3 * 2 + (longlong)_Dst_00) = 0; if (7 < uVar2) { pvVar3 = (void *)*param_1; _Memory = pvVar3; if ((0xfff < uVar2 * 2 + 2) && (_Memory = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { LAB_180003986: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = (longlong)_Dst_00; } else { _Dst = param_1; if (7 < uVar2) { _Dst = (longlong *)*param_1; } param_1[2] = param_3; memmove(_Dst,param_2,param_3 * 2); *(undefined2 *)(param_3 * 2 + (longlong)_Dst) = 0; } return param_1; } ================================================================== ### EXPORT FUNC 1800039a0 (349 bytes) name=FUN_1800039a0 longlong * FUN_1800039a0(longlong *param_1,ulonglong param_2) { ulonglong uVar1; ulonglong uVar2; void *pvVar3; longlong lVar4; ulonglong uVar5; size_t sVar6; void *_Memory; longlong *_Dst; ulonglong uVar7; void *_Dst_00; uVar2 = param_1[3]; if (param_2 <= uVar2) { _Dst = param_1; if (0xf < uVar2) { _Dst = (longlong *)*param_1; } param_1[2] = param_2; memset(_Dst,0,param_2); *(undefined1 *)(param_2 + (longlong)_Dst) = 0; return param_1; } if (0x7fffffffffffffff < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar5 = param_2 | 0xf; uVar7 = 0x7fffffffffffffff; if (((uVar5 < 0x8000000000000000) && (uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1))) && (uVar1 = (uVar2 >> 1) + uVar2, uVar7 = uVar5, uVar5 < uVar1)) { uVar7 = uVar1; } sVar6 = uVar7 + 1; if (uVar7 == 0xffffffffffffffff) { sVar6 = 0xffffffffffffffff; } if (sVar6 < 0x1000) { if (sVar6 == 0) { _Dst_00 = (void *)0x0; } else { _Dst_00 = (void *)FUN_18000c554(sVar6); } } else { if (sVar6 + 0x27 <= sVar6) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar4 = FUN_18000c554(sVar6 + 0x27); if (lVar4 == 0) goto LAB_180003aed; _Dst_00 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst_00 - 8) = lVar4; } param_1[2] = param_2; param_1[3] = uVar7; memset(_Dst_00,0,param_2); *(undefined1 *)((longlong)_Dst_00 + param_2) = 0; if (0xf < uVar2) { pvVar3 = (void *)*param_1; _Memory = pvVar3; if ((0xfff < uVar2 + 1) && (_Memory = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { LAB_180003aed: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = (longlong)_Dst_00; return param_1; } ================================================================== ### EXPORT FUNC 180003b00 (580 bytes) name=FUN_180003b00 undefined8 * FUN_180003b00(longlong *param_1,undefined8 *param_2,undefined8 *param_3) { ulonglong uVar1; longlong lVar2; ulonglong uVar3; longlong lVar4; undefined8 *puVar5; longlong lVar6; undefined8 *puVar7; longlong *plVar8; longlong *plVar9; undefined8 *puVar10; undefined8 *puVar11; undefined8 *puVar12; ulonglong uVar13; lVar4 = *param_1; lVar6 = ((longlong)param_2 - lVar4) / 6 + ((longlong)param_2 - lVar4 >> 0x3f); lVar2 = (param_1[1] - lVar4) / 0x60; if (lVar2 == 0x2aaaaaaaaaaaaaa) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } uVar1 = lVar2 + 1; uVar13 = (param_1[2] - lVar4) / 0x60; uVar3 = uVar1; if ((uVar13 <= 0x2aaaaaaaaaaaaaa - (uVar13 >> 1)) && (uVar3 = (uVar13 >> 1) + uVar13, uVar3 < uVar1)) { uVar3 = uVar1; } if (0x2aaaaaaaaaaaaaa < uVar3) { LAB_180003d3b: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar13 = uVar3 * 0x60; if (uVar13 < 0x1000) { if (uVar13 == 0) { puVar10 = (undefined8 *)0x0; } else { puVar10 = (undefined8 *)FUN_18000c554(uVar13); } } else { if (uVar13 + 0x27 <= uVar13) goto LAB_180003d3b; lVar4 = FUN_18000c554(uVar13 + 0x27); if (lVar4 == 0) goto LAB_180003d34; puVar10 = (undefined8 *)(lVar4 + 0x27U & 0xffffffffffffffe0); puVar10[-1] = lVar4; } puVar12 = puVar10 + ((lVar6 >> 4) - (lVar6 >> 0x3f)) * 0xc; FUN_180002e60(puVar12,param_3); FUN_180002e60(puVar12 + 4,param_3 + 4); FUN_180002e60(puVar12 + 8,param_3 + 8); puVar7 = (undefined8 *)param_1[1]; puVar5 = (undefined8 *)*param_1; puVar11 = puVar10; if (param_2 != puVar7) { FUN_180003d50(puVar5,param_2,puVar10); puVar5 = param_2; puVar7 = (undefined8 *)param_1[1]; puVar11 = puVar12 + 0xc; } FUN_180003d50(puVar5,puVar7,puVar11); plVar8 = (longlong *)*param_1; if (plVar8 != (longlong *)0x0) { plVar9 = (longlong *)param_1[1]; if (plVar8 != plVar9) { do { FUN_180002ca0(plVar8); plVar8 = plVar8 + 0xc; } while (plVar8 != plVar9); plVar8 = (longlong *)*param_1; } plVar9 = plVar8; if ((0xfff < (ulonglong)(((param_1[2] - (longlong)plVar8) / 0x60) * 0x60)) && (plVar9 = (longlong *)plVar8[-1], 0x1f < (ulonglong)((longlong)plVar8 + (-8 - (longlong)plVar9)))) { LAB_180003d34: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(plVar9); } *param_1 = (longlong)puVar10; param_1[1] = (longlong)(puVar10 + uVar1 * 0xc); param_1[2] = (longlong)(puVar10 + uVar3 * 0xc); return puVar12; } ================================================================== ### EXPORT FUNC 180003d50 (202 bytes) name=FUN_180003d50 void FUN_180003d50(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3) { undefined8 *puVar1; undefined8 *puVar2; undefined8 *puVar3; undefined8 uVar4; undefined8 *puVar5; undefined8 *puVar6; if (param_1 != param_2) { puVar5 = param_3; puVar6 = param_1 + 7; do { *(undefined8 *)((longlong)param_3 + (-0x28 - (longlong)param_1) + (longlong)puVar6) = 0; *(undefined8 *)((longlong)param_3 + (-0x20 - (longlong)param_1) + (longlong)puVar6) = 0; uVar4 = puVar6[-6]; puVar1 = puVar6 + 0xc; puVar2 = puVar6 + 5; *puVar5 = puVar6[-7]; puVar5[1] = uVar4; uVar4 = puVar6[-4]; puVar5[2] = puVar6[-5]; puVar5[3] = uVar4; puVar6[-5] = 0; puVar5 = puVar5 + 0xc; puVar6[-4] = 0xf; *(undefined1 *)(puVar6 + -7) = 0; *(undefined8 *)((longlong)param_3 + (-0x68 - (longlong)param_1) + (longlong)puVar1) = 0; *(undefined8 *)((longlong)param_3 + (-0x60 - (longlong)param_1) + (longlong)puVar1) = 0; uVar4 = puVar6[-2]; puVar3 = (undefined8 *)((longlong)param_3 + (-0x78 - (longlong)param_1) + (longlong)puVar1); *puVar3 = puVar6[-3]; puVar3[1] = uVar4; uVar4 = *puVar6; puVar3 = (undefined8 *)((longlong)param_3 + (-0x68 - (longlong)param_1) + (longlong)puVar1); *puVar3 = puVar6[-1]; puVar3[1] = uVar4; puVar6[-1] = 0; *puVar6 = 0xf; *(undefined1 *)(puVar6 + -3) = 0; *(undefined8 *)((longlong)param_3 + (-0x48 - (longlong)param_1) + (longlong)puVar1) = 0; *(undefined8 *)((longlong)param_3 + (-0x40 - (longlong)param_1) + (longlong)puVar1) = 0; uVar4 = puVar6[2]; puVar3 = (undefined8 *)((longlong)param_3 + (-0x58 - (longlong)param_1) + (longlong)puVar1); *puVar3 = puVar6[1]; puVar3[1] = uVar4; uVar4 = puVar6[4]; puVar3 = (undefined8 *)((longlong)param_3 + (-0x48 - (longlong)param_1) + (longlong)puVar1); *puVar3 = puVar6[3]; puVar3[1] = uVar4; puVar6[3] = 0; puVar6[4] = 0xf; *(undefined1 *)(puVar6 + 1) = 0; puVar6 = puVar1; } while (puVar2 != param_2); } return; } ================================================================== ### EXPORT FUNC 180003e20 (100 bytes) name=FUN_180003e20 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_180003e20(undefined8 *param_1,undefined8 param_2) { undefined1 auStack_48 [32]; undefined8 local_28; undefined1 local_20; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStack_48; local_20 = 1; *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; local_28 = param_2; __std_exception_copy(&local_28); *param_1 = std::invalid_argument::vftable; return param_1; } ================================================================== ### EXPORT FUNC 180003e90 (668 bytes) name=FUN_180003e90 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_180003e90(undefined8 *param_1) { longlong *plVar1; basic_ostream_> *pbVar2; void *pvVar3; void *pvVar4; size_t sVar5; undefined1 auStack_188 [32]; undefined4 local_168; undefined1 local_160; undefined7 uStack_15f; undefined8 uStack_158; undefined8 local_150; ulonglong uStack_148; undefined8 *local_140; int iStack_12c; undefined *local_128 [2]; undefined *local_118; undefined **local_110; basic_iostream_> local_108 [16]; longlong *local_f8; longlong *local_f0; longlong *local_d8; ulonglong *local_d0; int *local_c0; ulonglong local_a8; uint local_a0; basic_ios_> local_90 [104]; ulonglong local_28; ulonglong uVar6; local_28 = DAT_180015010 ^ (ulonglong)auStack_188; local_168 = 0; param_1[1] = 0; param_1[2] = 0; *param_1 = serial::SerialException::vftable; plVar1 = param_1 + 3; param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)plVar1 = 0; local_140 = param_1; memset(local_128,0,0xf8); local_128[0] = &DAT_18000fcb8; local_118 = &DAT_18000fba8; std::basic_ios_>::basic_ios_>(local_90); local_168 = 1; std::basic_iostream_>::basic_iostream_> ((basic_iostream_> *)local_128, (basic_streambuf_> *)&local_110); *(undefined ***)((longlong)local_128 + (longlong)*(int *)(local_128[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) = *(int *)(local_128[0] + 4) + -0x98; std::basic_streambuf_>::basic_streambuf_> ((basic_streambuf_> *)&local_110); local_110 = std::basic_stringbuf,std::allocator_>::vftable; local_a8 = 0; local_a0 = 0; pbVar2 = FUN_180006310((basic_ostream_> *)&local_118, "SerialException "); pbVar2 = FUN_180006310(pbVar2,"Serial port already open."); FUN_180006310(pbVar2," failed."); local_150 = 0; uStack_148 = 0xf; local_160 = 0; local_168 = 5; if (((local_a0 & 2) == 0) && (uVar6 = *local_d0, uVar6 != 0)) { pvVar4 = (void *)*local_f0; if (uVar6 < local_a8) { uVar6 = local_a8; } sVar5 = uVar6 - (longlong)pvVar4; LAB_18000401b: FUN_180002610((longlong *)&local_160,pvVar4,sVar5); } else if (((local_a0 & 4) == 0) && (*local_d8 != 0)) { pvVar4 = (void *)*local_f8; sVar5 = ((longlong)*local_c0 - (longlong)pvVar4) + *local_d8; goto LAB_18000401b; } if (plVar1 == (longlong *)&local_160) { if (0xf < uStack_148) { pvVar3 = (void *)CONCAT71(uStack_15f,local_160); pvVar4 = pvVar3; if ((0xfff < uStack_148 + 1) && (pvVar4 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) goto LAB_1800040b7; free(pvVar4); } } else { if (0xf < (ulonglong)param_1[6]) { pvVar4 = (void *)*plVar1; pvVar3 = pvVar4; if ((0xfff < param_1[6] + 1) && (pvVar3 = *(void **)((longlong)pvVar4 + -8), 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar3)))) { LAB_1800040b7: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar3); } param_1[6] = 0xf; *(undefined1 *)plVar1 = 0; *plVar1 = CONCAT71(uStack_15f,local_160); param_1[4] = uStack_158; param_1[5] = local_150; param_1[6] = uStack_148; } *(undefined ***)((longlong)local_128 + (longlong)*(int *)(local_128[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) = *(int *)(local_128[0] + 4) + -0x98; FUN_180005f90((basic_streambuf_> *)&local_110); std::basic_iostream_>::~basic_iostream_> (local_108); std::basic_ios_>::~basic_ios_>(local_90); return param_1; } ================================================================== ### EXPORT FUNC 180004130 (53 bytes) name=FUN_180004130 undefined8 * FUN_180004130(undefined8 *param_1,longlong param_2) { param_1[1] = 0; param_1[2] = 0; *param_1 = serial::SerialException::vftable; FUN_180002e60(param_1 + 3,(undefined8 *)(param_2 + 0x18)); return param_1; } ================================================================== ### EXPORT FUNC 180004170 (126 bytes) name=FUN_180004170 void FUN_180004170(undefined8 *param_1) { void *pvVar1; void *_Memory; *param_1 = serial::SerialException::vftable; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; _Memory = pvVar1; if ((0xfff < param_1[6] + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; /* WARNING: Could not recover jumptable at 0x0001800041e1. Too many branches */ /* WARNING: Treating indirect jump as call */ __std_exception_destroy(param_1 + 1); return; } ================================================================== ### EXPORT FUNC 1800041f0 (15 bytes) name=FUN_1800041f0 longlong * FUN_1800041f0(longlong param_1) { longlong *plVar1; plVar1 = (longlong *)(param_1 + 0x18); if (0xf < *(ulonglong *)(param_1 + 0x30)) { plVar1 = (longlong *)*plVar1; } return plVar1; } ================================================================== ### EXPORT FUNC 180004200 (159 bytes) name=FUN_180004200 undefined8 * FUN_180004200(undefined8 *param_1,uint param_2) { void *pvVar1; void *_Memory; *param_1 = serial::SerialException::vftable; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; _Memory = pvVar1; if ((0xfff < param_1[6] + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; __std_exception_destroy(param_1 + 1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 1800042a0 (95 bytes) name=FUN_1800042a0 void FUN_1800042a0(longlong *param_1) { basic_ios_> *this; this = (basic_ios_> *)(param_1 + 0x13); *(undefined ***)(this + (longlong)*(int *)(*param_1 + 4) + -0x98) = std::basic_stringstream,std::allocator_>::vftable; *(int *)(this + (longlong)*(int *)(*param_1 + 4) + -0x9c) = *(int *)(*param_1 + 4) + -0x98; FUN_180005f90((basic_streambuf_> *)(param_1 + 3)); std::basic_iostream_>::~basic_iostream_> ((basic_iostream_> *)(param_1 + 4)); /* WARNING: Could not recover jumptable at 0x0001800042f8. Too many branches */ /* WARNING: Treating indirect jump as call */ std::basic_ios_>::~basic_ios_>(this); return; } ================================================================== ### EXPORT FUNC 180004300 (13 bytes) name=FUN_180004300 void FUN_180004300(void *param_1) { memset(param_1,0,0xf8); return; } ================================================================== ### EXPORT FUNC 180004310 (843 bytes) name=FUN_180004310 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_180004310(undefined8 *param_1,longlong *param_2,undefined4 param_3,char *param_4) { longlong *plVar1; basic_ostream_> *pbVar2; basic_ostream_> *pbVar3; void *pvVar4; void *pvVar5; char *pcVar6; size_t sVar7; undefined1 auStack_1b8 [32]; undefined4 local_198; undefined1 local_190; undefined7 uStack_18f; undefined8 uStack_188; undefined8 local_180; ulonglong uStack_178; undefined8 *local_168; undefined8 local_150; undefined *local_148 [2]; undefined *local_138; undefined **local_130; basic_iostream_> local_128 [16]; longlong *local_118; longlong *local_110; longlong *local_f8; ulonglong *local_f0; int *local_e0; ulonglong local_c8; uint local_c0; basic_ios_> local_b0 [104]; ulonglong local_48; ulonglong uVar8; local_48 = DAT_180015010 ^ (ulonglong)auStack_1b8; local_198 = 0; param_1[1] = 0; param_1[2] = 0; *param_1 = serial::IOException::vftable; local_168 = param_1; local_150 = param_2; FUN_180002e60(param_1 + 3,param_2); *(undefined4 *)(param_1 + 7) = param_3; plVar1 = param_1 + 8; param_1[10] = 0; param_1[0xb] = 0xf; *(undefined1 *)plVar1 = 0; *(undefined4 *)(param_1 + 0xc) = 0; memset(local_148,0,0xf8); local_148[0] = &DAT_18000fcb8; local_138 = &DAT_18000fba8; std::basic_ios_>::basic_ios_>(local_b0); local_198 = 1; std::basic_iostream_>::basic_iostream_> ((basic_iostream_> *)local_148, (basic_streambuf_> *)&local_130); *(undefined ***)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) = *(int *)(local_148[0] + 4) + -0x98; std::basic_streambuf_>::basic_streambuf_> ((basic_streambuf_> *)&local_130); local_130 = std::basic_stringbuf,std::allocator_>::vftable; local_c8 = 0; local_c0 = 0; pbVar2 = FUN_180006310((basic_ostream_> *)&local_138,"IO Exception: ") ; FUN_180006310(pbVar2,param_4); pbVar2 = FUN_180006310((basic_ostream_> *)&local_138,", file "); pcVar6 = (char *)(param_1 + 3); if (0xf < (ulonglong)param_1[6]) { pcVar6 = (char *)param_1[3]; } pbVar2 = FUN_180006920(pbVar2,pcVar6,param_1[5]); pbVar2 = FUN_180006310(pbVar2,", line "); pbVar3 = std::basic_ostream_>::operator<< (pbVar2,*(int *)(param_1 + 7)); FUN_180006310((basic_ostream_> *)pbVar3,"."); local_180 = 0; uStack_178 = 0xf; local_190 = 0; local_198 = 5; if (((local_c0 & 2) == 0) && (uVar8 = *local_f0, uVar8 != 0)) { pvVar4 = (void *)*local_110; if (uVar8 < local_c8) { uVar8 = local_c8; } sVar7 = uVar8 - (longlong)pvVar4; LAB_1800044fe: FUN_180002610((longlong *)&local_190,pvVar4,sVar7); } else if (((local_c0 & 4) == 0) && (*local_f8 != 0)) { pvVar4 = (void *)*local_118; sVar7 = ((longlong)*local_e0 - (longlong)pvVar4) + *local_f8; goto LAB_1800044fe; } if (plVar1 == (longlong *)&local_190) { if (0xf < uStack_178) { pvVar5 = (void *)CONCAT71(uStack_18f,local_190); pvVar4 = pvVar5; if ((0xfff < uStack_178 + 1) && (pvVar4 = *(void **)((longlong)pvVar5 + -8), 0x1f < (ulonglong)((longlong)pvVar5 + (-8 - (longlong)pvVar4)))) goto LAB_18000459b; free(pvVar4); } } else { if (0xf < (ulonglong)param_1[0xb]) { pvVar4 = (void *)*plVar1; pvVar5 = pvVar4; if ((0xfff < param_1[0xb] + 1) && (pvVar5 = *(void **)((longlong)pvVar4 + -8), 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) { LAB_18000459b: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar5); } param_1[0xb] = 0xf; *(undefined1 *)plVar1 = 0; *plVar1 = CONCAT71(uStack_18f,local_190); param_1[9] = uStack_188; param_1[10] = local_180; param_1[0xb] = uStack_178; } *(undefined ***)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) = *(int *)(local_148[0] + 4) + -0x98; FUN_180005f90((basic_streambuf_> *)&local_130); std::basic_iostream_>::~basic_iostream_> (local_128); std::basic_ios_>::~basic_ios_>(local_b0); if (0xf < (ulonglong)param_2[3]) { pvVar4 = (void *)*param_2; pvVar5 = pvVar4; if ((0xfff < param_2[3] + 1U) && (pvVar5 = *(void **)((longlong)pvVar4 + -8), 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar5)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar5); } param_2[2] = 0; param_2[3] = 0xf; *(undefined1 *)param_2 = 0; return param_1; } ================================================================== ### EXPORT FUNC 180004660 (205 bytes) name=FUN_180004660 void FUN_180004660(undefined8 *param_1) { void *pvVar1; void *pvVar2; *param_1 = serial::IOException::vftable; if (0xf < (ulonglong)param_1[0xb]) { pvVar1 = (void *)param_1[8]; pvVar2 = pvVar1; if ((0xfff < param_1[0xb] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180004727; free(pvVar2); } param_1[10] = 0; param_1[0xb] = 0xf; *(undefined1 *)(param_1 + 8) = 0; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; pvVar2 = pvVar1; if ((0xfff < param_1[6] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { LAB_180004727: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar2); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; /* WARNING: Could not recover jumptable at 0x000180004720. Too many branches */ /* WARNING: Treating indirect jump as call */ __std_exception_destroy(param_1 + 1); return; } ================================================================== ### EXPORT FUNC 180004730 (97 bytes) name=FUN_180004730 undefined8 * FUN_180004730(undefined8 *param_1,longlong param_2) { param_1[1] = 0; param_1[2] = 0; *param_1 = serial::IOException::vftable; param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *(undefined4 *)(param_1 + 7) = *(undefined4 *)(param_2 + 0x38); FUN_180002e60(param_1 + 8,(undefined8 *)(param_2 + 0x40)); *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_2 + 0x60); return param_1; } ================================================================== ### EXPORT FUNC 1800047a0 (15 bytes) name=FUN_1800047a0 longlong * FUN_1800047a0(longlong param_1) { longlong *plVar1; plVar1 = (longlong *)(param_1 + 0x40); if (0xf < *(ulonglong *)(param_1 + 0x58)) { plVar1 = (longlong *)*plVar1; } return plVar1; } ================================================================== ### EXPORT FUNC 1800047b0 (238 bytes) name=FUN_1800047b0 undefined8 * FUN_1800047b0(undefined8 *param_1,uint param_2) { void *pvVar1; void *pvVar2; *param_1 = serial::IOException::vftable; if (0xf < (ulonglong)param_1[0xb]) { pvVar1 = (void *)param_1[8]; pvVar2 = pvVar1; if ((0xfff < param_1[0xb] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180004898; free(pvVar2); } param_1[10] = 0; param_1[0xb] = 0xf; *(undefined1 *)(param_1 + 8) = 0; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; pvVar2 = pvVar1; if ((0xfff < param_1[6] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { LAB_180004898: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar2); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; __std_exception_destroy(param_1 + 1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 1800048a0 (667 bytes) name=FUN_1800048a0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_1800048a0(undefined8 *param_1,char *param_2) { longlong *plVar1; basic_ostream_> *pbVar2; void *pvVar3; void *pvVar4; size_t sVar5; undefined1 auStack_198 [32]; undefined4 local_178; undefined1 local_170; undefined7 uStack_16f; undefined8 uStack_168; undefined8 local_160; ulonglong uStack_158; undefined8 *local_150; int iStack_13c; undefined *local_138 [2]; undefined *local_128; undefined **local_120; basic_iostream_> local_118 [16]; longlong *local_108; longlong *local_100; longlong *local_e8; ulonglong *local_e0; int *local_d0; ulonglong local_b8; uint local_b0; basic_ios_> local_a0 [104]; ulonglong local_38; ulonglong uVar6; local_38 = DAT_180015010 ^ (ulonglong)auStack_198; local_178 = 0; param_1[1] = 0; param_1[2] = 0; *param_1 = serial::PortNotOpenedException::vftable; plVar1 = param_1 + 3; param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)plVar1 = 0; local_150 = param_1; memset(local_138,0,0xf8); local_138[0] = &DAT_18000fcb8; local_128 = &DAT_18000fba8; std::basic_ios_>::basic_ios_>(local_a0); local_178 = 1; std::basic_iostream_>::basic_iostream_> ((basic_iostream_> *)local_138, (basic_streambuf_> *)&local_120); *(undefined ***)((longlong)local_138 + (longlong)*(int *)(local_138[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) = *(int *)(local_138[0] + 4) + -0x98; std::basic_streambuf_>::basic_streambuf_> ((basic_streambuf_> *)&local_120); local_120 = std::basic_stringbuf,std::allocator_>::vftable; local_b8 = 0; local_b0 = 0; pbVar2 = FUN_180006310((basic_ostream_> *)&local_128, "PortNotOpenedException "); pbVar2 = FUN_180006310(pbVar2,param_2); FUN_180006310(pbVar2," failed."); local_160 = 0; uStack_158 = 0xf; local_170 = 0; local_178 = 5; if (((local_b0 & 2) == 0) && (uVar6 = *local_e0, uVar6 != 0)) { pvVar4 = (void *)*local_100; if (uVar6 < local_b8) { uVar6 = local_b8; } sVar5 = uVar6 - (longlong)pvVar4; LAB_180004a2b: FUN_180002610((longlong *)&local_170,pvVar4,sVar5); } else if (((local_b0 & 4) == 0) && (*local_e8 != 0)) { pvVar4 = (void *)*local_108; sVar5 = ((longlong)*local_d0 - (longlong)pvVar4) + *local_e8; goto LAB_180004a2b; } if (plVar1 == (longlong *)&local_170) { if (0xf < uStack_158) { pvVar3 = (void *)CONCAT71(uStack_16f,local_170); pvVar4 = pvVar3; if ((0xfff < uStack_158 + 1) && (pvVar4 = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)pvVar4)))) goto LAB_180004ac7; free(pvVar4); } } else { if (0xf < (ulonglong)param_1[6]) { pvVar4 = (void *)*plVar1; pvVar3 = pvVar4; if ((0xfff < param_1[6] + 1) && (pvVar3 = *(void **)((longlong)pvVar4 + -8), 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)pvVar3)))) { LAB_180004ac7: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar3); } param_1[6] = 0xf; *(undefined1 *)plVar1 = 0; *plVar1 = CONCAT71(uStack_16f,local_170); param_1[4] = uStack_168; param_1[5] = local_160; param_1[6] = uStack_158; } *(undefined ***)((longlong)local_138 + (longlong)*(int *)(local_138[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) = *(int *)(local_138[0] + 4) + -0x98; FUN_180005f90((basic_streambuf_> *)&local_120); std::basic_iostream_>::~basic_iostream_> (local_118); std::basic_ios_>::~basic_ios_>(local_a0); return param_1; } ================================================================== ### EXPORT FUNC 180004b40 (53 bytes) name=FUN_180004b40 undefined8 * FUN_180004b40(undefined8 *param_1,longlong param_2) { param_1[1] = 0; param_1[2] = 0; *param_1 = serial::PortNotOpenedException::vftable; FUN_180002e60(param_1 + 3,(undefined8 *)(param_2 + 0x18)); return param_1; } ================================================================== ### EXPORT FUNC 180004b80 (126 bytes) name=FUN_180004b80 void FUN_180004b80(undefined8 *param_1) { void *pvVar1; void *_Memory; *param_1 = serial::PortNotOpenedException::vftable; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; _Memory = pvVar1; if ((0xfff < param_1[6] + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; /* WARNING: Could not recover jumptable at 0x000180004bf1. Too many branches */ /* WARNING: Treating indirect jump as call */ __std_exception_destroy(param_1 + 1); return; } ================================================================== ### EXPORT FUNC 180004c00 (159 bytes) name=FUN_180004c00 undefined8 * FUN_180004c00(undefined8 *param_1,uint param_2) { void *pvVar1; void *_Memory; *param_1 = serial::PortNotOpenedException::vftable; if (0xf < (ulonglong)param_1[6]) { pvVar1 = (void *)param_1[3]; _Memory = pvVar1; if ((0xfff < param_1[6] + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[5] = 0; param_1[6] = 0xf; *(undefined1 *)(param_1 + 3) = 0; *param_1 = std::exception::vftable; __std_exception_destroy(param_1 + 1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180004ca0 (744 bytes) name=FUN_180004ca0 undefined8 * FUN_180004ca0(undefined8 *param_1,undefined8 *param_2) { ulonglong *puVar1; longlong lVar2; ulonglong uVar3; ulonglong uVar4; undefined8 uVar5; short *psVar6; ulonglong uVar7; void *_Dst; undefined8 *puVar8; longlong lVar9; undefined8 *puVar10; _Dst = (void *)0x0; if (*(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 4) < DAT_1800160e0) { _Init_thread_header(&DAT_1800160e0); if (DAT_1800160e0 == -1) { DAT_1800160d0 = 0; DAT_1800160d8 = 7; DAT_1800160c0._0_2_ = 0; FUN_180003830(&DAT_1800160c0,L"\\\\.\\",4); atexit(FUN_18000e680); _Init_thread_footer(&DAT_1800160e0); } } psVar6 = (short *)&DAT_1800160c0; if (7 < DAT_1800160d8) { psVar6 = (short *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); } puVar8 = param_2; if (7 < (ulonglong)param_2[3]) { puVar8 = (undefined8 *)*param_2; } puVar1 = param_2 + 2; uVar3 = *puVar1; uVar7 = uVar3; if (DAT_1800160d0 < uVar3) { uVar7 = DAT_1800160d0; } if (uVar7 != 0) { lVar9 = (longlong)puVar8 - (longlong)psVar6; do { if (*(short *)(lVar9 + (longlong)psVar6) != *psVar6) goto LAB_180004e80; psVar6 = psVar6 + 1; uVar7 = uVar7 - 1; } while (uVar7 != 0); } if ((uVar3 < DAT_1800160d0) || (uVar3 != DAT_1800160d0)) { LAB_180004e80: param_1[2] = 0; param_1[3] = 7; *(undefined2 *)param_1 = 0; FUN_180006860(param_1,DAT_1800160d0 + *puVar1); uVar3 = DAT_1800160d0; puVar8 = &DAT_1800160c0; if (7 < DAT_1800160d8) { puVar8 = (undefined8 *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); } lVar9 = param_1[2]; uVar7 = param_1[3]; if (uVar7 - lVar9 < DAT_1800160d0) { FUN_1800066a0(param_1,DAT_1800160d0,uVar7,puVar8,DAT_1800160d0); } else { lVar2 = lVar9 + DAT_1800160d0; param_1[2] = lVar2; puVar10 = param_1; if (7 < uVar7) { puVar10 = (undefined8 *)*param_1; } memmove((void *)((longlong)puVar10 + lVar9 * 2),puVar8,uVar3 * 2); *(undefined2 *)((longlong)puVar10 + lVar2 * 2) = 0; } if (7 < (ulonglong)param_2[3]) { param_2 = (undefined8 *)*param_2; } uVar3 = *puVar1; lVar9 = param_1[2]; uVar7 = param_1[3]; if (uVar7 - lVar9 < uVar3) { FUN_1800066a0(param_1,uVar3,uVar7,param_2,uVar3); } else { param_1[2] = lVar9 + uVar3; puVar8 = param_1; if (7 < uVar7) { puVar8 = (undefined8 *)*param_1; } memmove((void *)((longlong)puVar8 + lVar9 * 2),param_2,uVar3 * 2); *(undefined2 *)((longlong)puVar8 + (lVar9 + uVar3) * 2) = 0; } } else { param_1[2] = 0; param_1[3] = 0; uVar3 = *puVar1; if (7 < (ulonglong)param_2[3]) { param_2 = (undefined8 *)*param_2; } if (uVar3 < 8) { uVar5 = param_2[1]; *param_1 = *param_2; param_1[1] = uVar5; param_1[2] = uVar3; param_1[3] = 7; } else { uVar7 = uVar3 | 7; if (0x7ffffffffffffffe < uVar7) { uVar7 = 0x7ffffffffffffffe; } if (0x7fffffffffffffff < uVar7 + 1) { LAB_180004f84: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar4 = (uVar7 + 1) * 2; if (uVar4 < 0x1000) { if (uVar4 != 0) { _Dst = (void *)FUN_18000c554(uVar4); } } else { if (uVar4 + 0x27 <= uVar4) goto LAB_180004f84; lVar9 = FUN_18000c554(uVar4 + 0x27); if (lVar9 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } _Dst = (void *)(lVar9 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar9; } *param_1 = _Dst; memcpy(_Dst,param_2,uVar3 * 2 + 2); param_1[2] = uVar3; param_1[3] = uVar7; } } return param_1; } ================================================================== ### EXPORT FUNC 180004f90 (170 bytes) name=FUN_180004f90 undefined8 * FUN_180004f90(undefined8 *param_1,uint param_2) { void *pvVar1; void *_Memory; *param_1 = serial::Serial::SerialImpl::vftable; FUN_180005790((longlong)param_1); CloseHandle((HANDLE)param_1[0xc]); CloseHandle((HANDLE)param_1[0xd]); if (7 < (ulonglong)param_1[4]) { pvVar1 = (void *)param_1[1]; _Memory = pvVar1; if ((0xfff < param_1[4] * 2 + 2U) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } param_1[3] = 0; param_1[4] = 7; *(undefined2 *)(param_1 + 1) = 0; if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180005040 (760 bytes) name=FUN_180005040 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_180005040(longlong param_1) { DWORD DVar1; HANDLE pvVar2; longlong *plVar3; basic_ostream_> *pbVar4; longlong *plVar5; char *pcVar6; LPCWSTR ***ppppWVar7; undefined8 uVar8; undefined1 auStackY_258 [32]; longlong local_208 [4]; longlong local_1e8 [8]; undefined8 local_1a8 [14]; LPCWSTR **local_138 [3]; undefined8 local_120; undefined *local_118 [2]; undefined *local_108; undefined **local_100 [13]; undefined8 local_98; undefined4 local_90; basic_ios_> local_80 [104]; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStackY_258; if (*(longlong *)(param_1 + 0x18) == 0) { FUN_180003e20(local_208,"Empty port is invalid."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_208,(ThrowInfo *)&DAT_180013448); } if (*(char *)(param_1 + 0x30) != '\x01') { FUN_180004ca0(local_138,(undefined8 *)(param_1 + 8)); ppppWVar7 = local_138; if (7 < local_120) { ppppWVar7 = (LPCWSTR ***)local_138[0]; } pvVar2 = CreateFileW((LPCWSTR)ppppWVar7,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,3,0x80, (HANDLE)0x0); *(HANDLE *)(param_1 + 0x28) = pvVar2; if (pvVar2 == (HANDLE)0xffffffffffffffff) { DVar1 = GetLastError(); memset(local_118,0,0xf8); local_118[0] = &DAT_18000fcb8; local_108 = &DAT_18000fba8; std::basic_ios_>::basic_ios_> (local_80); uVar8 = 0; std::basic_iostream_>:: basic_iostream_> ((basic_iostream_> *)local_118, (basic_streambuf_> *)local_100); *(undefined ***)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4) + -4) = *(int *)(local_118[0] + 4) + -0x98; std::basic_streambuf_>:: basic_streambuf_> ((basic_streambuf_> *)local_100); local_100[0] = std::basic_stringbuf,std::allocator_>:: vftable; local_98 = 0; local_90 = 0; if (DVar1 == 2) { plVar3 = FUN_1800059c0(param_1,local_208,uVar8); pbVar4 = FUN_180006310((basic_ostream_> *)&local_108, "Specified port, "); pbVar4 = (basic_ostream_> *)FUN_1800064e0(pbVar4,(char *)plVar3) ; FUN_180006310(pbVar4,", does not exist."); FUN_1800024b0(local_208); plVar3 = FUN_180006050((longlong)local_118,local_1e8); plVar5 = FUN_180002510(local_208, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar6 = (char *)FUN_1800061b0(plVar3); FUN_180004310(local_1a8,plVar5,0x53,pcVar6); /* WARNING: Subroutine does not return */ _CxxThrowException(local_1a8,(ThrowInfo *)&DAT_1800134b8); } pbVar4 = FUN_180006310((basic_ostream_> *)&local_108, "Unknown error opening the serial port: "); std::basic_ostream_>::operator<<(pbVar4,DVar1); plVar3 = FUN_180006050((longlong)local_118,local_1e8); plVar5 = FUN_180002510(local_208, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar6 = (char *)FUN_1800061b0(plVar3); FUN_180004310(local_1a8,plVar5,0x56,pcVar6); /* WARNING: Subroutine does not return */ _CxxThrowException(local_1a8,(ThrowInfo *)&DAT_1800134b8); } FUN_1800053c0(param_1); *(undefined1 *)(param_1 + 0x30) = 1; if (7 < local_120) { ppppWVar7 = (LPCWSTR ***)local_138[0]; if ((0xfff < local_120 * 2 + 2) && (ppppWVar7 = (LPCWSTR ***)local_138[0][-1], 0x1f < (ulonglong)((longlong)local_138[0] + (-8 - (longlong)ppppWVar7)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(ppppWVar7); } return; } FUN_180003e90(local_1e8); /* WARNING: Subroutine does not return */ _CxxThrowException(local_1e8,(ThrowInfo *)&DAT_1800133a0); } ================================================================== ### EXPORT FUNC 180005340 (61 bytes) name=FUN_180005340 undefined8 * FUN_180005340(undefined8 *param_1,longlong param_2) { *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; __std_exception_copy(param_2 + 8); *param_1 = std::invalid_argument::vftable; return param_1; } ================================================================== ### EXPORT FUNC 180005380 (61 bytes) name=FUN_180005380 undefined8 * FUN_180005380(undefined8 *param_1,longlong param_2) { *param_1 = std::exception::vftable; param_1[1] = 0; param_1[2] = 0; __std_exception_copy(param_2 + 8); *param_1 = std::logic_error::vftable; return param_1; } ================================================================== ### EXPORT FUNC 1800053c0 (968 bytes) name=FUN_1800053c0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1800053c0(longlong param_1) { uint uVar1; int iVar2; BOOL BVar3; longlong *plVar4; undefined1 auStack_108 [40]; longlong local_e0 [5]; undefined8 local_b8 [14]; _DCB local_48; _COMMTIMEOUTS local_28; ulonglong local_10; local_10 = DAT_180015010 ^ (ulonglong)auStack_108; if (*(HANDLE *)(param_1 + 0x28) == (HANDLE)0xffffffffffffffff) { plVar4 = FUN_180002510(local_e0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_b8,plVar4,99,"Invalid file descriptor, is the serial port open?"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); } local_48.StopBits = '\0'; local_48.XonChar = '\0'; local_48.XoffChar = '\0'; local_48.ErrorChar = '\0'; local_48.EofChar = '\0'; local_48.EvtChar = '\0'; local_48.wReserved1 = 0; local_48.DCBlength = 0x1c; local_48.BaudRate = 0; local_48._8_4_ = 0; local_48.wReserved = 0; local_48.XonLim = 0; local_48.XoffLim = 0; local_48.ByteSize = '\0'; local_48.Parity = '\0'; BVar3 = GetCommState(*(HANDLE *)(param_1 + 0x28),&local_48); if (BVar3 == 0) { plVar4 = FUN_180002510(local_e0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_b8,plVar4,0x6c,"Error getting the serial port state."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); } uVar1 = *(uint *)(param_1 + 0x48); local_48.BaudRate = uVar1; if (uVar1 < 0x3841) { if (uVar1 == 0x3840) { local_48.BaudRate = 0x3840; } else if (uVar1 < 0x4b1) { if (uVar1 == 0x4b0) { local_48.BaudRate = 0x4b0; } else if (uVar1 == 0x6e) { local_48.BaudRate = 0x6e; } else if (uVar1 == 300) { local_48.BaudRate = 300; } } else if (uVar1 == 0x960) { local_48.BaudRate = 0x960; } else if (uVar1 == 0x12c0) { local_48.BaudRate = 0x12c0; } } else if (uVar1 < 0x1c201) { if (uVar1 == 0x1c200) { local_48.BaudRate = 0x1c200; } else if (uVar1 == 0x4b00) { local_48.BaudRate = 0x4b00; } else if (uVar1 == 0x9600) { local_48.BaudRate = 0x9600; } } else if (uVar1 == 0x1f400) { local_48.BaudRate = 0x1f400; } else if (uVar1 == 0x3e800) { local_48.BaudRate = 0x3e800; } iVar2 = *(int *)(param_1 + 0x50); if (iVar2 == 8) { local_48.ByteSize = '\b'; } else if (iVar2 == 7) { local_48.ByteSize = '\a'; } else if (iVar2 == 6) { local_48.ByteSize = '\x06'; } else { if (iVar2 != 5) { FUN_180003e20(local_e0,"invalid char len"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); } local_48.ByteSize = '\x05'; } iVar2 = *(int *)(param_1 + 0x54); if (iVar2 == 1) { local_48._20_8_ = local_48._20_8_ & 0xffffffffffffff00; } else if (iVar2 == 3) { local_48.StopBits = 1; } else { if (iVar2 != 2) { FUN_180003e20(local_e0,"invalid stop bit"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); } local_48.StopBits = 2; } iVar2 = *(int *)(param_1 + 0x4c); if ((((iVar2 != 0) && (iVar2 != 2)) && (iVar2 != 1)) && ((iVar2 != 3 && (iVar2 != 4)))) { FUN_180003e20(local_e0,"invalid parity"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_e0,(ThrowInfo *)&DAT_180013448); } local_48.Parity = (BYTE)iVar2; iVar2 = *(int *)(param_1 + 0x58); if (iVar2 == 0) { local_48._8_4_ = local_48._8_4_ & 0xffffccfb; } else if (iVar2 == 1) { local_48._8_4_ = local_48._8_4_ & 0xffffcffb | 0x300; } else if (iVar2 == 2) { local_48._8_4_ = local_48._8_4_ & 0xffffecff | 0x2004; } BVar3 = SetCommState(*(HANDLE *)(param_1 + 0x28),&local_48); if (BVar3 == 0) { CloseHandle(*(HANDLE *)(param_1 + 0x28)); plVar4 = FUN_180002510(local_e0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_b8,plVar4,0x106,"Error setting serial port settings."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); } local_28.ReadIntervalTimeout = *(DWORD *)(param_1 + 0x34); local_28.ReadTotalTimeoutConstant = *(DWORD *)(param_1 + 0x38); local_28.ReadTotalTimeoutMultiplier = *(DWORD *)(param_1 + 0x3c); local_28.WriteTotalTimeoutConstant = *(DWORD *)(param_1 + 0x40); local_28.WriteTotalTimeoutMultiplier = *(DWORD *)(param_1 + 0x44); BVar3 = SetCommTimeouts(*(HANDLE *)(param_1 + 0x28),&local_28); if (BVar3 != 0) { return; } plVar4 = FUN_180002510(local_e0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_b8,plVar4,0x111,"Error setting timeouts."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_b8,(ThrowInfo *)&DAT_1800134b8); } ================================================================== ### EXPORT FUNC 180005790 (244 bytes) name=FUN_180005790 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_180005790(longlong param_1) { BOOL BVar1; DWORD DVar2; basic_ostream_> *this; longlong *plVar3; longlong *plVar4; char *pcVar5; undefined1 auStack_1f8 [40]; longlong local_1d0 [4]; longlong local_1b0 [5]; undefined8 local_188 [14]; basic_iostream_> local_118 [16]; basic_ostream_> local_108 [240]; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStack_1f8; if (*(char *)(param_1 + 0x30) == '\x01') { if (*(HANDLE *)(param_1 + 0x28) != (HANDLE)0xffffffffffffffff) { BVar1 = CloseHandle(*(HANDLE *)(param_1 + 0x28)); if (BVar1 == 0) { FUN_180004300(local_118); FUN_1800060f0(local_118); DVar2 = GetLastError(); this = FUN_180006310(local_108,"Error while closing serial port: "); std::basic_ostream_>::operator<<(this,DVar2); plVar3 = FUN_180006050((longlong)local_118,local_1b0); plVar4 = FUN_180002510(local_1d0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar5 = (char *)FUN_1800061b0(plVar3); FUN_180004310(local_188,plVar4,0x11f,pcVar5); /* WARNING: Subroutine does not return */ _CxxThrowException(local_188,(ThrowInfo *)&DAT_1800134b8); } *(undefined8 *)(param_1 + 0x28) = 0xffffffffffffffff; } *(undefined1 *)(param_1 + 0x30) = 0; } return; } ================================================================== ### EXPORT FUNC 180005890 (291 bytes) name=FUN_180005890 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ DWORD FUN_180005890(longlong param_1,LPVOID param_2,DWORD param_3) { BOOL BVar1; DWORD DVar2; basic_ostream_> *this; longlong *plVar3; longlong *plVar4; char *pcVar5; undefined1 auStackY_228 [32]; longlong local_1f0 [4]; longlong local_1d0 [7]; undefined8 local_198 [14]; DWORD local_128 [4]; basic_iostream_> local_118 [16]; basic_ostream_> local_108 [240]; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStackY_228; if (*(char *)(param_1 + 0x30) == '\0') { FUN_1800048a0(local_1d0,"Serial::read"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_1d0,(ThrowInfo *)&DAT_1800134d8); } BVar1 = ReadFile(*(HANDLE *)(param_1 + 0x28),param_2,param_3,local_128,(LPOVERLAPPED)0x0); if (BVar1 != 0) { return local_128[0]; } FUN_180004300(local_118); FUN_1800060f0(local_118); DVar2 = GetLastError(); this = FUN_180006310(local_108,"Error while reading from the serial port: "); std::basic_ostream_>::operator<<(this,DVar2); plVar3 = FUN_180006050((longlong)local_118,local_1d0); plVar4 = FUN_180002510(local_1f0, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar5 = (char *)FUN_1800061b0(plVar3); FUN_180004310(local_198,plVar4,0x154,pcVar5); /* WARNING: Subroutine does not return */ _CxxThrowException(local_198,(ThrowInfo *)&DAT_1800134b8); } ================================================================== ### EXPORT FUNC 1800059c0 (197 bytes) name=FUN_1800059c0 longlong * FUN_1800059c0(longlong param_1,longlong *param_2,undefined8 param_3) { undefined1 uVar1; longlong lVar2; ulonglong uVar3; longlong *plVar4; undefined8 *puVar5; ulonglong uVar6; undefined8 *puVar7; bool bVar8; puVar7 = (undefined8 *)(param_1 + 8); bVar8 = 7 < *(ulonglong *)(param_1 + 0x20); puVar5 = puVar7; if (bVar8) { puVar5 = (undefined8 *)*puVar7; } lVar2 = *(longlong *)(param_1 + 0x18); if (bVar8) { puVar7 = (undefined8 *)*puVar7; } param_2[2] = 0; param_2[3] = 0xf; *(undefined1 *)param_2 = 0; uVar6 = ((longlong)puVar5 + lVar2 * 2) - (longlong)puVar7 >> 1; if (0xf < uVar6) { FUN_180006c50(param_2,uVar6); param_2[2] = 0; } for (; puVar7 != (undefined8 *)((longlong)puVar5 + lVar2 * 2); puVar7 = (undefined8 *)((longlong)puVar7 + 2)) { uVar1 = *(undefined1 *)puVar7; uVar6 = param_2[2]; uVar3 = param_2[3]; if (uVar6 < uVar3) { param_2[2] = uVar6 + 1; plVar4 = param_2; if (0xf < uVar3) { plVar4 = (longlong *)*param_2; } *(undefined1 *)((longlong)plVar4 + uVar6) = uVar1; *(undefined1 *)((longlong)plVar4 + uVar6 + 1) = 0; } else { FUN_180002770(param_2,uVar3,param_3,uVar1); } } return param_2; } ================================================================== ### EXPORT FUNC 180005a90 (233 bytes) name=FUN_180005a90 ulonglong * FUN_180005a90(longlong param_1,ulonglong *param_2,longlong *param_3,byte param_4) { longlong lVar1; int iVar2; longlong lVar3; ulonglong uVar4; longlong lVar5; longlong lVar6; undefined8 uVar7; ulonglong uVar8; uVar8 = param_3[1] + *param_3; lVar3 = **(longlong **)(param_1 + 0x38); uVar4 = **(ulonglong **)(param_1 + 0x40); if ((uVar4 != 0) && (*(ulonglong *)(param_1 + 0x68) < uVar4)) { *(ulonglong *)(param_1 + 0x68) = uVar4; } lVar5 = *(longlong *)(param_1 + 0x68); lVar6 = **(longlong **)(param_1 + 0x18); if (((ulonglong)(lVar5 - lVar6) < uVar8) || ((uVar8 != 0 && ((((param_4 & 1) != 0 && (lVar3 == 0)) || (((param_4 & 2) != 0 && (uVar4 == 0)))))))) { *param_2 = 0xffffffffffffffff; } else { lVar1 = lVar6 + uVar8; if (((param_4 & 1) != 0) && (lVar3 != 0)) { **(longlong **)(param_1 + 0x38) = lVar1; **(int **)(param_1 + 0x50) = (int)lVar5 - (int)lVar1; } if (((param_4 & 2) != 0) && (uVar4 != 0)) { iVar2 = **(int **)(param_1 + 0x58); uVar7 = **(undefined8 **)(param_1 + 0x40); **(longlong **)(param_1 + 0x20) = lVar6; **(longlong **)(param_1 + 0x40) = lVar1; **(int **)(param_1 + 0x58) = (iVar2 + (int)uVar7) - (int)lVar1; } *param_2 = uVar8; } param_2[1] = 0; param_2[2] = 0; return param_2; } ================================================================== ### EXPORT FUNC 180005b80 (340 bytes) name=FUN_180005b80 ulonglong * FUN_180005b80(longlong param_1,ulonglong *param_2,longlong param_3,int param_4,byte param_5) { longlong lVar1; int iVar2; longlong lVar3; ulonglong uVar4; longlong lVar5; longlong lVar6; undefined8 uVar7; ulonglong uVar8; ulonglong uVar9; lVar3 = **(longlong **)(param_1 + 0x38); uVar4 = **(ulonglong **)(param_1 + 0x40); if ((uVar4 != 0) && (*(ulonglong *)(param_1 + 0x68) < uVar4)) { *(ulonglong *)(param_1 + 0x68) = uVar4; } lVar5 = *(longlong *)(param_1 + 0x68); lVar6 = **(longlong **)(param_1 + 0x18); uVar9 = lVar5 - lVar6; if (param_4 == 0) { uVar8 = 0; LAB_180005c31: uVar8 = uVar8 + param_3; if ((uVar8 <= uVar9) && ((uVar8 == 0 || ((((param_5 & 1) == 0 || (lVar3 != 0)) && (((param_5 & 2) == 0 || (uVar4 != 0)))))))) { lVar1 = lVar6 + uVar8; if (((param_5 & 1) != 0) && (lVar3 != 0)) { **(longlong **)(param_1 + 0x38) = lVar1; **(int **)(param_1 + 0x50) = (int)lVar5 - (int)lVar1; } if (((param_5 & 2) != 0) && (uVar4 != 0)) { iVar2 = **(int **)(param_1 + 0x58); uVar7 = **(undefined8 **)(param_1 + 0x40); **(longlong **)(param_1 + 0x20) = lVar6; **(longlong **)(param_1 + 0x40) = lVar1; **(int **)(param_1 + 0x58) = (iVar2 + (int)uVar7) - (int)lVar1; } *param_2 = uVar8; goto LAB_180005cac; } } else if (param_4 == 1) { if ((param_5 & 3) != 3) { if ((param_5 & 1) == 0) { if (((param_5 & 2) != 0) && ((uVar4 != 0 || (lVar6 == 0)))) { uVar8 = uVar4 - lVar6; goto LAB_180005c31; } } else if ((lVar3 != 0) || (lVar6 == 0)) { uVar8 = lVar3 - lVar6; goto LAB_180005c31; } } } else { uVar8 = uVar9; if (param_4 == 2) goto LAB_180005c31; } *param_2 = 0xffffffffffffffff; LAB_180005cac: param_2[1] = 0; param_2[2] = 0; return param_2; } ================================================================== ### EXPORT FUNC 180005ce0 (104 bytes) name=FUN_180005ce0 ulonglong FUN_180005ce0(longlong param_1) { undefined8 *puVar1; byte *pbVar2; byte *pbVar3; undefined8 uVar4; byte *pbVar5; puVar1 = *(undefined8 **)(param_1 + 0x38); pbVar2 = (byte *)*puVar1; if (pbVar2 != (byte *)0x0) { if (pbVar2 < pbVar2 + **(int **)(param_1 + 0x50)) { return (ulonglong)*pbVar2; } pbVar3 = (byte *)**(undefined8 **)(param_1 + 0x40); if ((pbVar3 != (byte *)0x0) && ((*(byte *)(param_1 + 0x70) & 4) == 0)) { pbVar5 = *(byte **)(param_1 + 0x68); if (*(byte **)(param_1 + 0x68) < pbVar3) { pbVar5 = pbVar3; } if (pbVar2 < pbVar5) { *(byte **)(param_1 + 0x68) = pbVar5; uVar4 = *puVar1; *puVar1 = uVar4; **(int **)(param_1 + 0x50) = (int)pbVar5 - (int)uVar4; return (ulonglong)*(byte *)**(undefined8 **)(param_1 + 0x38); } } } return 0xffffffff; } ================================================================== ### EXPORT FUNC 180005d50 (82 bytes) name=FUN_180005d50 int FUN_180005d50(longlong param_1,int param_2) { ulonglong uVar1; uVar1 = **(ulonglong **)(param_1 + 0x38); if (((uVar1 != 0) && (**(ulonglong **)(param_1 + 0x18) < uVar1)) && ((param_2 == -1 || (((char)param_2 == *(char *)(uVar1 - 1) || ((*(byte *)(param_1 + 0x70) & 2) == 0)))))) { **(int **)(param_1 + 0x50) = **(int **)(param_1 + 0x50) + 1; **(longlong **)(param_1 + 0x38) = **(longlong **)(param_1 + 0x38) + -1; if (param_2 == -1) { param_2 = 0; } else { *(char *)**(undefined8 **)(param_1 + 0x38) = (char)param_2; } return param_2; } return -1; } ================================================================== ### EXPORT FUNC 180005db0 (478 bytes) name=FUN_180005db0 int FUN_180005db0(basic_streambuf_> *param_1,int param_2) { void *_Src; undefined8 uVar1; uint uVar2; char *pcVar3; void *pvVar4; longlong lVar5; ulonglong uVar6; ulonglong _Size; if (((byte)param_1[0x70] & 2) != 0) { return -1; } if (param_2 == -1) { return 0; } uVar6 = **(ulonglong **)(param_1 + 0x40); if ((uVar6 != 0) && (uVar6 < (longlong)**(int **)(param_1 + 0x58) + uVar6)) { pcVar3 = std::basic_streambuf_>::_Pninc(param_1); *pcVar3 = (char)param_2; *(ulonglong *)(param_1 + 0x68) = uVar6 + 1; return param_2; } _Src = (void *)**(undefined8 **)(param_1 + 0x18); _Size = ((longlong)**(int **)(param_1 + 0x58) + uVar6) - (longlong)_Src; if (uVar6 == 0) { _Size = 0; } if (_Size < 0x20) { uVar6 = 0x20; pvVar4 = (void *)FUN_18000c554(0x20); } else { if (_Size < 0x3fffffff) { uVar6 = _Size * 2; if (uVar6 < 0x1000) { if (uVar6 == 0) { pvVar4 = (void *)0x0; } else { pvVar4 = (void *)FUN_18000c554(uVar6); } goto LAB_180005ea3; } } else { uVar6 = 0x7fffffff; if (0x7ffffffe < _Size) { return -1; } } if (uVar6 + 0x27 <= uVar6) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar5 = FUN_18000c554(uVar6 + 0x27); if (lVar5 == 0) goto LAB_180005f67; pvVar4 = (void *)(lVar5 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)pvVar4 - 8) = lVar5; } LAB_180005ea3: memcpy(pvVar4,_Src,_Size); lVar5 = _Size + (longlong)pvVar4; *(longlong *)(param_1 + 0x68) = lVar5 + 1; **(undefined8 **)(param_1 + 0x20) = pvVar4; **(longlong **)(param_1 + 0x40) = lVar5; **(int **)(param_1 + 0x58) = ((int)pvVar4 - (int)lVar5) + (int)uVar6; if (((byte)param_1[0x70] & 4) == 0) { uVar1 = *(undefined8 *)(param_1 + 0x68); lVar5 = (**(longlong **)(param_1 + 0x38) - (longlong)_Src) + (longlong)pvVar4; **(undefined8 **)(param_1 + 0x18) = pvVar4; **(longlong **)(param_1 + 0x38) = lVar5; **(int **)(param_1 + 0x50) = (int)uVar1 - (int)lVar5; } else { **(undefined8 **)(param_1 + 0x18) = pvVar4; **(undefined8 **)(param_1 + 0x38) = 0; **(int **)(param_1 + 0x50) = (int)pvVar4; } uVar2 = *(uint *)(param_1 + 0x70); if ((uVar2 & 1) != 0) { pvVar4 = _Src; if ((0xfff < _Size) && (pvVar4 = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar4)))) { LAB_180005f67: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar4); uVar2 = *(uint *)(param_1 + 0x70); } *(uint *)(param_1 + 0x70) = uVar2 | 1; pcVar3 = std::basic_streambuf_>::_Pninc(param_1); *pcVar3 = (char)param_2; return param_2; } ================================================================== ### EXPORT FUNC 180005f90 (182 bytes) name=FUN_180005f90 void FUN_180005f90(basic_streambuf_> *param_1) { void *pvVar1; void *_Memory; longlong lVar2; *(undefined ***)param_1 = std::basic_stringbuf,std::allocator_>::vftable; if (((byte)param_1[0x70] & 1) != 0) { if (**(longlong **)(param_1 + 0x40) == 0) { lVar2 = (longlong)**(int **)(param_1 + 0x50) + **(longlong **)(param_1 + 0x38); } else { lVar2 = (longlong)**(int **)(param_1 + 0x58) + **(longlong **)(param_1 + 0x40); } pvVar1 = (void *)**(longlong **)(param_1 + 0x18); _Memory = pvVar1; if ((0xfff < (ulonglong)(lVar2 - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } **(undefined8 **)(param_1 + 0x18) = 0; **(undefined8 **)(param_1 + 0x38) = 0; **(undefined4 **)(param_1 + 0x50) = 0; **(undefined8 **)(param_1 + 0x20) = 0; **(undefined8 **)(param_1 + 0x40) = 0; **(undefined4 **)(param_1 + 0x58) = 0; *(uint *)(param_1 + 0x70) = *(uint *)(param_1 + 0x70) & 0xfffffffe; *(undefined8 *)(param_1 + 0x68) = 0; /* WARNING: Could not recover jumptable at 0x000180006039. Too many branches */ /* WARNING: Treating indirect jump as call */ std::basic_streambuf_>::~basic_streambuf_> (param_1); return; } ================================================================== ### EXPORT FUNC 180006050 (156 bytes) name=FUN_180006050 longlong * FUN_180006050(longlong param_1,longlong *param_2) { ulonglong uVar1; void *pvVar2; ulonglong *puVar3; size_t sVar4; ulonglong local_20; longlong *local_18; local_18 = param_2; param_2[2] = 0; param_2[3] = 0xf; *(undefined1 *)param_2 = 0; if (((*(uint *)(param_1 + 0x88) & 2) == 0) && (uVar1 = **(ulonglong **)(param_1 + 0x58), uVar1 != 0)) { pvVar2 = (void *)**(longlong **)(param_1 + 0x38); local_20 = uVar1; puVar3 = &local_20; if (uVar1 < *(ulonglong *)(param_1 + 0x80)) { puVar3 = (ulonglong *)(param_1 + 0x80); } sVar4 = *puVar3 - (longlong)pvVar2; } else { if ((*(uint *)(param_1 + 0x88) & 4) != 0) { return param_2; } if (**(longlong **)(param_1 + 0x50) == 0) { return param_2; } pvVar2 = (void *)**(longlong **)(param_1 + 0x30); sVar4 = ((longlong)**(int **)(param_1 + 0x68) - (longlong)pvVar2) + **(longlong **)(param_1 + 0x50); } FUN_180002610(param_2,pvVar2,sVar4); return param_2; } ================================================================== ### EXPORT FUNC 1800060f0 (182 bytes) name=FUN_1800060f0 basic_iostream_> * FUN_1800060f0(basic_iostream_> *param_1) { basic_streambuf_> *this; *(undefined **)param_1 = &DAT_18000fcb8; *(undefined **)(param_1 + 0x10) = &DAT_18000fba8; std::basic_ios_>::basic_ios_> ((basic_ios_> *)(param_1 + 0x98)); this = (basic_streambuf_> *)(param_1 + 0x18); std::basic_iostream_>::basic_iostream_> (param_1,this); *(undefined ***)(param_1 + *(int *)(*(longlong *)param_1 + 4)) = std::basic_stringstream,std::allocator_>::vftable; *(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + -4) = *(int *)(*(longlong *)param_1 + 4) + -0x98; std::basic_streambuf_>::basic_streambuf_> (this); *(undefined ***)this = std::basic_stringbuf,std::allocator_>::vftable; *(undefined8 *)(param_1 + 0x80) = 0; *(undefined4 *)(param_1 + 0x88) = 0; return param_1; } ================================================================== ### EXPORT FUNC 1800061b0 (15 bytes) name=FUN_1800061b0 undefined8 * FUN_1800061b0(undefined8 *param_1) { if (0xf < (ulonglong)param_1[3]) { return (undefined8 *)*param_1; } return param_1; } ================================================================== ### EXPORT FUNC 1800061c0 (52 bytes) name=FUN_1800061c0 basic_streambuf_> * FUN_1800061c0(basic_streambuf_> *param_1,uint param_2) { FUN_180005f90(param_1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180006200 (146 bytes) name=FUN_180006200 basic_ios_> * FUN_180006200(basic_ios_> *param_1,uint param_2) { *(undefined ***)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98) = std::basic_stringstream,std::allocator_>::vftable; *(int *)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x9c) = *(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98; FUN_180005f90((basic_streambuf_> *)(param_1 + -0x80)); std::basic_iostream_>::~basic_iostream_> ((basic_iostream_> *)(param_1 + -0x78)); std::basic_ios_>::~basic_ios_>(param_1); if ((param_2 & 1) != 0) { free(param_1 + -0x98); } return param_1 + -0x98; } ================================================================== ### EXPORT FUNC 1800062a0 (63 bytes) name=FUN_1800062a0 void FUN_1800062a0(longlong *param_1) { longlong *plVar1; bool bVar2; bVar2 = std::uncaught_exception(); if (!bVar2) { std::basic_ostream_>::_Osfx ((basic_ostream_> *)*param_1); } plVar1 = *(longlong **)((longlong)*(int *)(*(longlong *)*param_1 + 4) + 0x48 + *param_1); if (plVar1 != (longlong *)0x0) { (**(code **)(*plVar1 + 0x10))(); } return; } ================================================================== ### EXPORT FUNC 1800062e0 (36 bytes) name=FUN_1800062e0 void FUN_1800062e0(longlong *param_1) { longlong *plVar1; plVar1 = *(longlong **)((longlong)*(int *)(*(longlong *)*param_1 + 4) + 0x48 + *param_1); if (plVar1 != (longlong *)0x0) { (**(code **)(*plVar1 + 0x10))(); } return; } ================================================================== ### EXPORT FUNC 180006310 (444 bytes) name=FUN_180006310 basic_ostream_> * FUN_180006310(basic_ostream_> *param_1,char *param_2) { longlong *plVar1; basic_ostream_> *this; bool bVar2; int iVar3; __int64 _Var4; longlong lVar5; int iVar6; longlong lVar7; longlong lVar8; iVar6 = 0; lVar8 = -1; do { lVar8 = lVar8 + 1; } while (param_2[lVar8] != '\0'); lVar5 = *(longlong *)param_1; lVar7 = *(longlong *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x28); if ((lVar7 < 1) || (lVar7 <= lVar8)) { lVar7 = 0; } else { lVar7 = lVar7 - lVar8; } plVar1 = *(longlong **)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48); if (plVar1 != (longlong *)0x0) { (**(code **)(*plVar1 + 8))(plVar1); lVar5 = *(longlong *)param_1; } if (*(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0) { this = *(basic_ostream_> **) (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50); if ((this == (basic_ostream_> *)0x0) || (this == param_1)) { bVar2 = true; } else { std::basic_ostream_>::flush(this); lVar5 = *(longlong *)param_1; bVar2 = *(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0; } } else { bVar2 = false; } if (bVar2) { if ((*(uint *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x18) & 0x1c0) != 0x40) { for (; 0 < lVar7; lVar7 = lVar7 + -1) { iVar3 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar3 == -1) goto LAB_180006459; } lVar5 = *(longlong *)param_1; } _Var4 = std::basic_streambuf_>::sputn (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48),param_2,lVar8); if (_Var4 == lVar8) { for (; 0 < lVar7; lVar7 = lVar7 + -1) { iVar3 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar3 == -1) goto LAB_180006459; } } else { LAB_180006459: iVar6 = 4; } *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; } else { iVar6 = 4; } std::basic_ios_>::setstate ((basic_ios_> *) (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false); bVar2 = std::uncaught_exception(); if (!bVar2) { std::basic_ostream_>::_Osfx(param_1); } if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 0x10))(); } return param_1; } ================================================================== ### EXPORT FUNC 1800064e0 (25 bytes) name=FUN_1800064e0 void FUN_1800064e0(basic_ostream_> *param_1,char *param_2) { char *pcVar1; pcVar1 = param_2; if (0xf < *(ulonglong *)(param_2 + 0x18)) { pcVar1 = *(char **)param_2; } FUN_180006920(param_1,pcVar1,*(ulonglong *)(param_2 + 0x10)); return; } ================================================================== ### EXPORT FUNC 180006500 (402 bytes) name=FUN_180006500 undefined8 * FUN_180006500(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined2 param_4) { ulonglong uVar1; longlong lVar2; ulonglong uVar3; void *_Src; size_t _Size; longlong lVar4; ulonglong uVar5; ulonglong uVar6; void *_Memory; void *_Dst; lVar2 = param_1[2]; if (lVar2 == 0x7ffffffffffffffe) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar3 = param_1[3]; uVar5 = lVar2 + 1U | 7; uVar6 = 0x7ffffffffffffffe; if (((uVar5 < 0x7fffffffffffffff) && (uVar3 <= 0x7ffffffffffffffe - (uVar3 >> 1))) && (uVar1 = (uVar3 >> 1) + uVar3, uVar6 = uVar5, uVar5 < uVar1)) { uVar6 = uVar1; } uVar5 = uVar6 + 1; if (uVar6 == 0xffffffffffffffff) { uVar5 = 0xffffffffffffffff; } if (0x7fffffffffffffff < uVar5) { LAB_18000668f: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar5 = uVar5 * 2; _Dst = (void *)0x0; if (uVar5 < 0x1000) { if (uVar5 != 0) { _Dst = (void *)FUN_18000c554(uVar5); } } else { if (uVar5 + 0x27 <= uVar5) goto LAB_18000668f; lVar4 = FUN_18000c554(uVar5 + 0x27); if (lVar4 == 0) goto LAB_18000664a; _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar4; } _Size = lVar2 * 2; param_1[2] = lVar2 + 1U; param_1[3] = uVar6; if (uVar3 < 8) { memcpy(_Dst,param_1,_Size); *(undefined2 *)(_Size + (longlong)_Dst) = param_4; *(undefined2 *)(_Size + 2 + (longlong)_Dst) = 0; } else { _Src = (void *)*param_1; memcpy(_Dst,_Src,_Size); *(undefined2 *)(_Size + (longlong)_Dst) = param_4; *(undefined2 *)(_Size + 2 + (longlong)_Dst) = 0; _Memory = _Src; if ((0xfff < uVar3 * 2 + 2) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { LAB_18000664a: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = _Dst; return param_1; } ================================================================== ### EXPORT FUNC 1800066a0 (433 bytes) name=FUN_1800066a0 undefined8 * FUN_1800066a0(undefined8 *param_1,ulonglong param_2,undefined8 param_3,void *param_4, longlong param_5) { ulonglong uVar1; undefined2 *puVar2; longlong lVar3; ulonglong uVar4; void *_Src; size_t _Size; longlong lVar5; ulonglong uVar6; void *_Dst; ulonglong uVar7; void *_Memory; lVar3 = param_1[2]; if (0x7ffffffffffffffeU - lVar3 < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar4 = param_1[3]; uVar6 = param_2 + lVar3 | 7; uVar7 = 0x7ffffffffffffffe; if (((uVar6 < 0x7fffffffffffffff) && (uVar4 <= 0x7ffffffffffffffe - (uVar4 >> 1))) && (uVar1 = (uVar4 >> 1) + uVar4, uVar7 = uVar6, uVar6 < uVar1)) { uVar7 = uVar1; } uVar6 = uVar7 + 1; if (uVar7 == 0xffffffffffffffff) { uVar6 = 0xffffffffffffffff; } if (0x7fffffffffffffff < uVar6) { LAB_18000684e: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar6 = uVar6 * 2; _Dst = (void *)0x0; if (uVar6 < 0x1000) { if (uVar6 != 0) { _Dst = (void *)FUN_18000c554(uVar6); } } else { if (uVar6 + 0x27 <= uVar6) goto LAB_18000684e; lVar5 = FUN_18000c554(uVar6 + 0x27); if (lVar5 == 0) goto LAB_180006800; _Dst = (void *)(lVar5 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar5; } _Size = lVar3 * 2; param_1[2] = param_2 + lVar3; param_1[3] = uVar7; puVar2 = (undefined2 *)((longlong)_Dst + (param_5 + lVar3) * 2); if (uVar4 < 8) { memcpy(_Dst,param_1,_Size); memcpy((void *)(_Size + (longlong)_Dst),param_4,param_5 * 2); *puVar2 = 0; } else { _Src = (void *)*param_1; memcpy(_Dst,_Src,_Size); memcpy((void *)(_Size + (longlong)_Dst),param_4,param_5 * 2); *puVar2 = 0; _Memory = _Src; if ((0xfff < uVar4 * 2 + 2) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { LAB_180006800: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = _Dst; return param_1; } ================================================================== ### EXPORT FUNC 180006860 (179 bytes) name=FUN_180006860 void FUN_180006860(undefined8 *param_1,ulonglong param_2) { ulonglong uVar1; ulonglong uVar2; void *_Src; void *_Memory; uVar1 = param_1[2]; if (uVar1 <= param_2) { uVar2 = param_1[3]; if (uVar2 != param_2) { if (uVar2 < param_2) { FUN_180006ae0(param_1,param_2 - uVar1); param_1[2] = uVar1; return; } if ((param_2 < 8) && (7 < uVar2)) { _Src = (void *)*param_1; memcpy(param_1,_Src,uVar1 * 2 + 2); _Memory = _Src; if ((0xfff < param_1[3] * 2 + 2U) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); param_1[3] = 7; } } } return; } ================================================================== ### EXPORT FUNC 180006920 (433 bytes) name=FUN_180006920 basic_ostream_> * FUN_180006920(basic_ostream_> *param_1,char *param_2,ulonglong param_3) { longlong *plVar1; basic_ostream_> *this; bool bVar2; int iVar3; ulonglong uVar4; longlong lVar5; int iVar6; longlong lVar7; iVar6 = 0; lVar5 = *(longlong *)param_1; uVar4 = *(ulonglong *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x28); if (((longlong)uVar4 < 1) || (uVar4 <= param_3)) { lVar7 = 0; } else { lVar7 = uVar4 - param_3; } plVar1 = *(longlong **)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48); if (plVar1 != (longlong *)0x0) { (**(code **)(*plVar1 + 8))(plVar1); lVar5 = *(longlong *)param_1; } if (*(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0) { this = *(basic_ostream_> **) (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50); if ((this == (basic_ostream_> *)0x0) || (this == param_1)) { bVar2 = true; } else { std::basic_ostream_>::flush(this); lVar5 = *(longlong *)param_1; bVar2 = *(int *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x10) == 0; } } else { bVar2 = false; } if (bVar2) { if ((*(uint *)(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x18) & 0x1c0) != 0x40) { for (; lVar7 != 0; lVar7 = lVar7 + -1) { iVar3 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar3 == -1) { iVar6 = 4; goto LAB_180006a12; } } lVar5 = *(longlong *)param_1; } uVar4 = std::basic_streambuf_>::sputn (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48),param_2,param_3); if (uVar4 == param_3) { LAB_180006a12: do { if (lVar7 == 0) goto LAB_180006a3a; iVar3 = std::basic_streambuf_>::sputc (*(basic_streambuf_> **) (param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48), (char)param_1[(longlong)*(int *)(*(longlong *)param_1 + 4) + 0x58]); if (iVar3 == -1) break; lVar7 = lVar7 + -1; } while( true ); } iVar6 = 4; LAB_180006a3a: *(undefined8 *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x28) = 0; } else { iVar6 = 4; } std::basic_ios_>::setstate ((basic_ios_> *) (param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false); bVar2 = std::uncaught_exception(); if (!bVar2) { std::basic_ostream_>::_Osfx(param_1); } if (*(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + 0x48) + 0x10))(); } return param_1; } ================================================================== ### EXPORT FUNC 180006ae0 (354 bytes) name=FUN_180006ae0 undefined8 * FUN_180006ae0(undefined8 *param_1,ulonglong param_2) { ulonglong uVar1; size_t _Size; longlong lVar2; ulonglong uVar3; void *_Src; longlong lVar4; ulonglong uVar5; ulonglong uVar6; void *_Memory; void *_Dst; lVar2 = param_1[2]; if (0x7ffffffffffffffeU - lVar2 < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar3 = param_1[3]; uVar5 = param_2 + lVar2 | 7; uVar6 = 0x7ffffffffffffffe; if (((uVar5 < 0x7fffffffffffffff) && (uVar3 <= 0x7ffffffffffffffe - (uVar3 >> 1))) && (uVar1 = (uVar3 >> 1) + uVar3, uVar6 = uVar5, uVar5 < uVar1)) { uVar6 = uVar1; } uVar5 = uVar6 + 1; if (uVar6 == 0xffffffffffffffff) { uVar5 = 0xffffffffffffffff; } if (0x7fffffffffffffff < uVar5) { LAB_180006c3f: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar5 = uVar5 * 2; if (uVar5 < 0x1000) { if (uVar5 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(uVar5); } } else { if (uVar5 + 0x27 <= uVar5) goto LAB_180006c3f; lVar4 = FUN_18000c554(uVar5 + 0x27); if (lVar4 == 0) goto LAB_180006c0c; _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar4; } param_1[2] = param_2 + lVar2; _Size = lVar2 * 2 + 2; param_1[3] = uVar6; if (uVar3 < 8) { memcpy(_Dst,param_1,_Size); } else { _Src = (void *)*param_1; memcpy(_Dst,_Src,_Size); _Memory = _Src; if ((0xfff < uVar3 * 2 + 2) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { LAB_180006c0c: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = _Dst; return param_1; } ================================================================== ### EXPORT FUNC 180006c50 (324 bytes) name=FUN_180006c50 undefined8 * FUN_180006c50(undefined8 *param_1,ulonglong param_2) { ulonglong uVar1; longlong lVar2; ulonglong uVar3; void *_Src; longlong lVar4; size_t sVar5; ulonglong uVar6; ulonglong uVar7; void *_Memory; void *_Dst; lVar2 = param_1[2]; if (0x7fffffffffffffffU - lVar2 < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b40(); } uVar3 = param_1[3]; uVar6 = param_2 + lVar2 | 0xf; uVar7 = 0x7fffffffffffffff; if (((uVar6 < 0x8000000000000000) && (uVar3 <= 0x7fffffffffffffff - (uVar3 >> 1))) && (uVar1 = (uVar3 >> 1) + uVar3, uVar7 = uVar6, uVar6 < uVar1)) { uVar7 = uVar1; } sVar5 = uVar7 + 1; if (uVar7 == 0xffffffffffffffff) { sVar5 = 0xffffffffffffffff; } if (sVar5 < 0x1000) { if (sVar5 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(sVar5); } } else { if (sVar5 + 0x27 <= sVar5) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar4 = FUN_18000c554(sVar5 + 0x27); if (lVar4 == 0) goto LAB_180006d5e; _Dst = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar4; } param_1[2] = param_2 + lVar2; param_1[3] = uVar7; if (uVar3 < 0x10) { memcpy(_Dst,param_1,lVar2 + 1U); } else { _Src = (void *)*param_1; memcpy(_Dst,_Src,lVar2 + 1U); _Memory = _Src; if ((0xfff < uVar3 + 1) && (_Memory = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)_Memory)))) { LAB_180006d5e: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = _Dst; return param_1; } ================================================================== ### EXPORT FUNC 180006da0 (99 bytes) name=FUN_180006da0 void FUN_180006da0(undefined8 *param_1) { longlong *plVar1; void *pvVar2; void *_Memory; plVar1 = (longlong *)*param_1; if (plVar1 != (longlong *)0x0) { if (0xf < (ulonglong)plVar1[3]) { pvVar2 = (void *)*plVar1; _Memory = pvVar2; if ((0xfff < plVar1[3] + 1U) && (_Memory = *(void **)((longlong)pvVar2 + -8), 0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } plVar1[2] = 0; plVar1[3] = 0xf; *(undefined1 *)plVar1 = 0; } return; } ================================================================== ### EXPORT FUNC 180006e10 (102 bytes) name=FUN_180006e10 void FUN_180006e10(undefined8 *param_1) { longlong *plVar1; void *pvVar2; void *_Memory; plVar1 = (longlong *)*param_1; if (plVar1 != (longlong *)0x0) { if (7 < (ulonglong)plVar1[3]) { pvVar2 = (void *)*plVar1; _Memory = pvVar2; if ((0xfff < plVar1[3] * 2 + 2U) && (_Memory = *(void **)((longlong)pvVar2 + -8), 0x1f < (ulonglong)((longlong)pvVar2 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } plVar1[3] = 7; plVar1[2] = 0; *(undefined2 *)plVar1 = 0; } return; } ================================================================== ### EXPORT FUNC 180006e78 (12 bytes) name=FUN_180006e78 void FUN_180006e78(longlong param_1,uint param_2) { FUN_180006200((basic_ios_> *)(param_1 - *(int *)(param_1 + -4)), param_2); return; } ================================================================== ### EXPORT FUNC 180006e90 (95 bytes) name=FUN_180006e90 void FUN_180006e90(longlong *param_1) { BOOL BVar1; longlong *plVar2; longlong local_98 [4]; undefined8 local_78 [15]; BVar1 = ReleaseMutex(*(HANDLE *)(*param_1 + 0x60)); if (BVar1 != 0) { return; } plVar2 = FUN_180002510(local_98, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_78,plVar2,0x271,"Error releasing read mutex."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_78,(ThrowInfo *)&DAT_1800134b8); } ================================================================== ### EXPORT FUNC 180006f50 (419 bytes) name=FUN_180006f50 undefined8 * FUN_180006f50(undefined8 *param_1,char *param_2,undefined8 param_3,undefined8 *param_4) { undefined8 *puVar1; char cVar2; longlong lVar3; ulonglong uVar4; ulonglong uVar5; undefined8 *puVar6; undefined8 *puVar7; HANDLE pvVar8; char *pcVar9; undefined8 uVar10; *param_1 = serial::Serial::vftable; uVar10 = param_3; puVar6 = (undefined8 *)FUN_18000c554(0x70); *puVar6 = 0; puVar6[1] = 0; puVar6[2] = 0; puVar6[3] = 0; puVar6[4] = 0; puVar6[5] = 0; puVar6[6] = 0; puVar6[7] = 0; puVar6[8] = 0; puVar6[9] = 0; puVar6[10] = 0; puVar6[0xb] = 0; puVar6[0xc] = 0; puVar6[0xd] = 0; *puVar6 = serial::Serial::SerialImpl::vftable; pcVar9 = param_2; if (0xf < *(ulonglong *)(param_2 + 0x18)) { pcVar9 = *(char **)param_2; } lVar3 = *(longlong *)(param_2 + 0x10); if (0xf < *(ulonglong *)(param_2 + 0x18)) { param_2 = *(char **)param_2; } puVar1 = puVar6 + 1; puVar6[3] = 0; puVar6[4] = 7; *(undefined2 *)puVar1 = 0; FUN_180006860(puVar1,(longlong)(pcVar9 + lVar3) - (longlong)param_2); for (; param_2 != pcVar9 + lVar3; param_2 = param_2 + 1) { cVar2 = *param_2; uVar4 = puVar6[3]; uVar5 = puVar6[4]; if (uVar4 < uVar5) { puVar6[3] = uVar4 + 1; puVar7 = puVar1; if (7 < uVar5) { puVar7 = (undefined8 *)*puVar1; } *(short *)((longlong)puVar7 + uVar4 * 2) = (short)cVar2; *(undefined2 *)((longlong)puVar7 + uVar4 * 2 + 2) = 0; } else { FUN_180006500(puVar1,uVar5,uVar10,(short)cVar2); } } puVar6[5] = 0xffffffffffffffff; *(undefined1 *)(puVar6 + 6) = 0; *(undefined8 *)((longlong)puVar6 + 0x34) = 0; *(undefined8 *)((longlong)puVar6 + 0x3c) = 0; *(undefined4 *)((longlong)puVar6 + 0x44) = 0; *(int *)(puVar6 + 9) = (int)param_3; *(undefined4 *)((longlong)puVar6 + 0x4c) = 0; *(undefined4 *)(puVar6 + 10) = 8; *(undefined8 *)((longlong)puVar6 + 0x54) = 1; if (puVar6[3] != 0) { FUN_180005040((longlong)puVar6); } pvVar8 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,0,(LPCWSTR)0x0); puVar6[0xc] = pvVar8; pvVar8 = CreateMutexW((LPSECURITY_ATTRIBUTES)0x0,0,(LPCWSTR)0x0); puVar6[0xd] = pvVar8; param_1[1] = puVar6; uVar10 = param_4[1]; *(undefined8 *)((longlong)puVar6 + 0x34) = *param_4; *(undefined8 *)((longlong)puVar6 + 0x3c) = uVar10; *(undefined4 *)((longlong)puVar6 + 0x44) = *(undefined4 *)(param_4 + 2); if (*(char *)(puVar6 + 6) != '\0') { FUN_1800053c0((longlong)puVar6); } return param_1; } ================================================================== ### EXPORT FUNC 180007100 (77 bytes) name=FUN_180007100 undefined8 * FUN_180007100(undefined8 *param_1,uint param_2) { undefined8 *puVar1; *param_1 = serial::Serial::vftable; puVar1 = (undefined8 *)param_1[1]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180007150 (298 bytes) name=FUN_180007150 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ DWORD FUN_180007150(longlong param_1,LPCVOID param_2,DWORD param_3) { BOOL BVar1; DWORD DVar2; basic_ostream_> *this; longlong *plVar3; longlong *plVar4; char *pcVar5; undefined1 auStackY_248 [32]; longlong local_210 [4]; undefined8 local_1f0 [7]; longlong local_1b8 [4]; undefined8 local_198 [14]; DWORD local_128 [4]; basic_iostream_> local_118 [16]; basic_ostream_> local_108 [240]; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStackY_248; if (*(char *)(*(longlong *)(param_1 + 8) + 0x30) == '\0') { FUN_1800048a0(local_1f0,"Serial::write"); /* WARNING: Subroutine does not return */ _CxxThrowException(local_1f0,(ThrowInfo *)&DAT_1800134d8); } BVar1 = WriteFile(*(HANDLE *)(*(longlong *)(param_1 + 8) + 0x28),param_2,param_3,local_128, (LPOVERLAPPED)0x0); if (BVar1 != 0) { return local_128[0]; } FUN_180004300(local_118); FUN_1800060f0(local_118); DVar2 = GetLastError(); this = FUN_180006310(local_108,"Error while writing to the serial port: "); std::basic_ostream_>::operator<<(this,DVar2); plVar3 = FUN_180006050((longlong)local_118,local_1b8); plVar4 = FUN_180002510(local_210, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar5 = (char *)FUN_1800061b0(plVar3); FUN_180004310(local_198,plVar4,0x163,pcVar5); /* WARNING: Subroutine does not return */ _CxxThrowException(local_198,(ThrowInfo *)&DAT_1800134b8); } ================================================================== ### EXPORT FUNC 180007280 (131 bytes) name=FUN_180007280 void FUN_180007280(longlong *param_1,longlong param_2,longlong param_3,longlong param_4) { void *pvVar1; void *_Memory; pvVar1 = (void *)*param_1; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(param_1[2] - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = param_2; param_1[1] = param_2 + param_3; param_1[2] = param_2 + param_4; return; } ================================================================== ### EXPORT FUNC 180007310 (15 bytes) name=FUN_180007310 void FUN_180007310(undefined8 *param_1) { (**(code **)*param_1)(); return; } ================================================================== ### EXPORT FUNC 180007320 (52 bytes) name=FUN_180007320 longlong * FUN_180007320(longlong *param_1,uint param_2) { FUN_180007360(param_1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180007360 (138 bytes) name=FUN_180007360 void FUN_180007360(longlong *param_1) { undefined8 *puVar1; char cVar2; *param_1 = (longlong)SerialPort::vftable; if ((param_1[4] != 0) && ((char)param_1[3] == '\x01')) { cVar2 = (**(code **)(*param_1 + 0x28))(); if (cVar2 != '\0') { *(undefined1 *)(param_1 + 3) = 0; FUN_180005790(*(longlong *)(param_1[4] + 8)); puVar1 = (undefined8 *)param_1[4]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } param_1[4] = 0; } } puVar1 = (undefined8 *)param_1[4]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } param_1[4] = 0; if ((int)param_1[2] != 0) { /* WARNING: Subroutine does not return */ terminate(); } return; } ================================================================== ### EXPORT FUNC 1800073f0 (289 bytes) name=FUN_1800073f0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_1800073f0(longlong *param_1,char *param_2,ulonglong param_3) { char cVar1; undefined8 *puVar2; ulonglong uVar3; ulonglong extraout_RAX; undefined1 auStackY_98 [32]; uintptr_t local_58; ulonglong uStack_50; undefined4 local_48; longlong *local_38; undefined8 *local_30; ulonglong local_28; local_28 = DAT_180015010 ^ (ulonglong)auStackY_98; local_38 = param_1; cVar1 = (**(code **)(*param_1 + 0x28))(); if (cVar1 != '\0') { (**(code **)(*param_1 + 0x20))(param_1); } local_30 = (undefined8 *)FUN_18000c554(0x10); *local_30 = 0; local_30[1] = 0; local_58 = 0; uStack_50 = 0; local_48 = 0; puVar2 = FUN_180006f50(local_30,param_2,param_3 & 0xffffffff,&local_58); param_1[4] = (longlong)puVar2; local_30 = (undefined8 *)FUN_18000c554(0x10); *local_30 = param_1; local_30[1] = FUN_180007310; local_58 = _beginthreadex((void *)0x0,0,FUN_180007930,local_30,0,(uint *)&uStack_50); if (local_58 == 0) { uStack_50 = uStack_50 & 0xffffffff00000000; std::_Throw_Cpp_error(6); uVar3 = extraout_RAX & 0xffffffffffffff00; } else { if ((int)param_1[2] != 0) { /* WARNING: Subroutine does not return */ terminate(); } param_1[1] = local_58; param_1[2] = uStack_50; uVar3 = CONCAT71((int7)(local_58 >> 8),1); } return uVar3; } ================================================================== ### EXPORT FUNC 180007520 (69 bytes) name=FUN_180007520 void FUN_180007520(longlong *param_1) { undefined8 *puVar1; char cVar2; cVar2 = (**(code **)(*param_1 + 0x28))(); if (cVar2 != '\0') { *(undefined1 *)(param_1 + 3) = 0; FUN_180005790(*(longlong *)(param_1[4] + 8)); puVar1 = (undefined8 *)param_1[4]; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } param_1[4] = 0; } return; } ================================================================== ### EXPORT FUNC 180007570 (19 bytes) name=FUN_180007570 ulonglong FUN_180007570(longlong param_1) { ulonglong in_RAX; if (*(longlong *)(param_1 + 0x20) != 0) { in_RAX = 0; if (*(char *)(param_1 + 0x18) == '\x01') { return 1; } } return in_RAX & 0xffffffffffffff00; } ================================================================== ### EXPORT FUNC 180007590 (292 bytes) name=FUN_180007590 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ DWORD FUN_180007590(longlong *param_1,LPCVOID param_2,DWORD param_3) { longlong lVar1; longlong lVar2; char cVar3; DWORD DVar4; BOOL BVar5; longlong *plVar6; undefined1 auStack_168 [32]; longlong local_148 [4]; longlong local_128 [4]; undefined8 local_108 [14]; undefined8 local_98 [14]; longlong local_28; ulonglong local_20; local_20 = DAT_180015010 ^ (ulonglong)auStack_168; cVar3 = (**(code **)(*param_1 + 0x28))(); if (cVar3 == '\0') { DVar4 = 0xffffffff; } else { lVar1 = param_1[4]; lVar2 = *(longlong *)(lVar1 + 8); local_28 = lVar2; DVar4 = WaitForSingleObject(*(HANDLE *)(lVar2 + 0x68),0xffffffff); if (DVar4 != 0) { plVar6 = FUN_180002510(local_148, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_108,plVar6,0x279,"Error claiming write mutex."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_108,(ThrowInfo *)&DAT_1800134b8); } DVar4 = FUN_180007150(lVar1,param_2,param_3); BVar5 = ReleaseMutex(*(HANDLE *)(lVar2 + 0x68)); if (BVar5 == 0) { plVar6 = FUN_180002510(local_128, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_98,plVar6,0x281,"Error releasing write mutex."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_98,(ThrowInfo *)&DAT_1800134b8); } } return DVar4; } ================================================================== ### EXPORT FUNC 1800076c0 (579 bytes) name=FUN_1800076c0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1800076c0(longlong param_1) { char cVar1; longlong lVar2; longlong lVar3; undefined8 *puVar4; DWORD DVar5; DWORD DVar6; BOOL BVar7; basic_ostream_> *this; longlong *plVar8; char *pcVar9; longlong *plVar10; undefined1 auStack_738 [32]; longlong local_718 [4]; longlong local_6f8 [4]; longlong local_6d8 [4]; longlong local_6b8 [4]; undefined8 local_698 [14]; undefined8 local_628 [14]; undefined8 local_5b8 [14]; longlong local_548; _COMSTAT local_540 [2]; basic_iostream_> local_528 [16]; basic_ostream_> local_518 [240]; undefined1 local_428 [1024]; ulonglong local_28; local_28 = DAT_180015010 ^ (ulonglong)auStack_738; *(undefined1 *)(param_1 + 0x18) = 1; cVar1 = *(char *)(param_1 + 0x18); do { if (cVar1 == '\0') { return; } lVar2 = *(longlong *)(*(longlong *)(param_1 + 0x20) + 8); if (*(char *)(lVar2 + 0x30) == '\0') { DVar6 = 0; } else { BVar7 = ClearCommError(*(HANDLE *)(lVar2 + 0x28),(LPDWORD)0x0,local_540); DVar6 = local_540[0].cbInQue; if (BVar7 == 0) { FUN_180004300(local_528); FUN_1800060f0(local_528); DVar6 = GetLastError(); this = FUN_180006310(local_518,"Error while checking status of the serial port: "); std::basic_ostream_>::operator<<(this,DVar6); plVar10 = FUN_180006050((longlong)local_528,local_6b8); plVar8 = FUN_180002510(local_6d8, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); pcVar9 = (char *)FUN_1800061b0(plVar10); FUN_180004310(local_5b8,plVar8,0x138,pcVar9); /* WARNING: Subroutine does not return */ _CxxThrowException(local_5b8,(ThrowInfo *)&DAT_1800134b8); } } if (0 < (int)DVar6) { memset(local_428,0,0x400); if (0x400 < (int)DVar6) { DVar6 = 0x400; } lVar2 = *(longlong *)(param_1 + 0x20); lVar3 = *(longlong *)(lVar2 + 8); local_548 = lVar3; DVar5 = WaitForSingleObject(*(HANDLE *)(lVar3 + 0x60),0xffffffff); if (DVar5 != 0) { plVar10 = FUN_180002510(local_6f8, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_628,plVar10,0x269,"Error claiming read mutex."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_628,(ThrowInfo *)&DAT_1800134b8); } DVar6 = FUN_180005890(*(longlong *)(lVar2 + 8),local_428,DVar6); BVar7 = ReleaseMutex(*(HANDLE *)(lVar3 + 0x60)); if (BVar7 == 0) { plVar10 = FUN_180002510(local_718, "C:\\Users\\Derek\\source\\repos\\EloThermal-windows\\ThermalSDK\\serial\\impl\\win.cc" ); FUN_180004310(local_698,plVar10,0x271,"Error releasing read mutex."); /* WARNING: Subroutine does not return */ _CxxThrowException(local_698,(ThrowInfo *)&DAT_1800134b8); } puVar4 = *(undefined8 **)(param_1 + 0x28); if (puVar4 != (undefined8 *)0x0) { (**(code **)*puVar4)(puVar4,local_428,DVar6); } } cVar1 = *(char *)(param_1 + 0x18); } while( true ); } ================================================================== ### EXPORT FUNC 180007930 (45 bytes) name=FUN_180007930 undefined8 FUN_180007930(undefined8 *param_1) { (*(code *)param_1[1])(*param_1); _Cnd_do_broadcast_at_thread_exit(); free(param_1); return 0; } ================================================================== ### EXPORT FUNC 180007960 (85 bytes) name=FUN_180007960 void FUN_180007960(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { undefined8 uVar1; undefined8 *puVar2; undefined8 local_res10; undefined8 local_res18; undefined8 local_res20; local_res10 = param_2; local_res18 = param_3; local_res20 = param_4; uVar1 = __acrt_iob_func(1); puVar2 = (undefined8 *)FUN_180002fc0(); __stdio_common_vfprintf(*puVar2,uVar1,param_1,0,&local_res10); return; } ================================================================== ### EXPORT FUNC 1800079c0 (119 bytes) name=FUN_1800079c0 undefined8 * FUN_1800079c0(undefined8 *param_1,ulonglong param_2) { void *_Memory; *param_1 = TCMVirtualDevice::vftable; _Mtx_destroy_in_situ(param_1 + 0x10); _Cnd_destroy_in_situ(param_1 + 7); FUN_180002550((longlong)(param_1 + 1)); _Memory = (void *)param_1[1]; param_1[1] = 0; free(_Memory); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180007a40 (651 bytes) name=FUN_180007a40 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_180007a40(longlong param_1,int param_2) { longlong lVar1; byte bVar2; undefined8 *puVar3; code *pcVar4; bool bVar5; int iVar6; undefined8 *puVar7; ulonglong uVar8; longlong lVar9; void *_Memory; char *pcVar10; char cVar11; longlong *plVar12; void **ppvVar13; undefined1 auStack_88 [32]; char local_68 [8]; void *local_60; char *pcStack_58; char *local_50; undefined8 *local_48; undefined8 uStack_40; longlong local_38; int local_30; ulonglong local_28; local_28 = DAT_180015010 ^ (ulonglong)auStack_88; if (param_2 == 0) { uVar8 = CONCAT71((int7)(local_28 >> 8),1); } else { iVar6 = 0x80; if ((param_2 < 0x81) && (iVar6 = param_2, param_2 < -0x80)) { iVar6 = -0x80; } local_60 = (void *)0x0; pcStack_58 = (char *)0x0; local_50 = (char *)0x0; cVar11 = (char)iVar6; if (iVar6 < 0) { local_68[0] = '\x01'; FUN_180007d30((longlong *)&local_60,(void *)0x0,local_68); local_68[0] = -cVar11; if (pcStack_58 == local_50) { pcVar10 = pcStack_58; FUN_180007d30((longlong *)&local_60,pcStack_58,local_68); } else { *pcStack_58 = local_68[0]; pcVar10 = pcStack_58 + 1; pcStack_58 = pcVar10; } } else { local_68[0] = '\0'; FUN_180007d30((longlong *)&local_60,(void *)0x0,local_68); local_68[0] = cVar11; if (pcStack_58 == local_50) { pcVar10 = pcStack_58; FUN_180007d30((longlong *)&local_60,pcStack_58,local_68); } else { *pcStack_58 = cVar11; pcVar10 = pcStack_58 + 1; pcStack_58 = pcVar10; } } *(undefined1 *)(param_1 + 0x30) = 0; puVar7 = (undefined8 *)FUN_18000c554(0x28); *puVar7 = 0; puVar7[1] = 0; puVar7[2] = 0; puVar7[3] = 0; puVar7[4] = 0; *puVar7 = FTDICommand::vftable; puVar7[1] = 0; puVar7[2] = 0; puVar7[3] = 0; ppvVar13 = &local_60; local_48 = puVar7; FUN_180009d70((longlong)puVar7,pcVar10,0x77,(longlong *)ppvVar13); puVar3 = *(undefined8 **)(param_1 + 0xd0); if (puVar3 != (undefined8 *)0x0) { ppvVar13 = (void **)*puVar3; (*ppvVar13[1])(puVar3,puVar7[1],puVar7[2] - puVar7[1]); } bVar5 = true; (**(code **)*puVar7)(puVar7,1); lVar1 = param_1 + 0x80; uStack_40 = 0; local_48 = (undefined8 *)lVar1; iVar6 = _Mtx_lock(lVar1); if (iVar6 != 0) { std::_Throw_C_error(iVar6); pcVar4 = (code *)swi(3); uVar8 = (*pcVar4)(); return uVar8; } uStack_40 = CONCAT71(uStack_40._1_7_,1); lVar9 = _Xtime_get_ticks(); lVar9 = (lVar9 + 1000000) * 100; local_38 = lVar9 / 1000000000; local_30 = (int)lVar9 + (int)local_38 * -1000000000; iVar6 = _Mtx_current_owns(lVar1); if (iVar6 == 0) { std::_Throw_Cpp_error(4); pcVar4 = (code *)swi(3); uVar8 = (*pcVar4)(); return uVar8; } plVar12 = &local_38; lVar9 = lVar1; iVar6 = _Cnd_timedwait(param_1 + 0x38); if (iVar6 == 0) { bVar5 = false; } else if (iVar6 != 2) { std::_Throw_C_error(iVar6); pcVar4 = (code *)swi(3); uVar8 = (*pcVar4)(); return uVar8; } if (DAT_180015ff0 != '\0') { if (bVar5) { FUN_180007960("EloMotorDevice timeout\n",lVar9,plVar12,ppvVar13); } else { FUN_180007960("EloMotorDevice:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar12,ppvVar13); } } bVar2 = *(byte *)(param_1 + 0x30); iVar6 = _Mtx_unlock(lVar1); if (iVar6 != 0) { std::_Throw_C_error(iVar6); } if (local_60 != (void *)0x0) { _Memory = local_60; if ((0xfff < (ulonglong)((longlong)local_50 - (longlong)local_60)) && (_Memory = *(void **)((longlong)local_60 + -8), 0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } uVar8 = (ulonglong)bVar2; } return uVar8; } ================================================================== ### EXPORT FUNC 180007cd0 (17 bytes) name=FUN_180007cd0 undefined1 FUN_180007cd0(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && (param_3 == 'w')) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180007cf0 (57 bytes) name=FUN_180007cf0 void FUN_180007cf0(longlong param_1,longlong *param_2) { longlong lVar1; int iVar2; lVar1 = *param_2; if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'w')) { *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; iVar2 = _Cnd_broadcast(param_1 + 0x38); if (iVar2 != 0) { std::_Throw_C_error(iVar2); } } return; } ================================================================== ### EXPORT FUNC 180007d30 (308 bytes) name=FUN_180007d30 undefined1 * FUN_180007d30(longlong *param_1,void *param_2,undefined1 *param_3) { longlong lVar1; void *_Src; ulonglong uVar2; longlong lVar3; undefined1 *_Dst; ulonglong uVar4; ulonglong uVar5; undefined1 *_Dst_00; size_t _Size; undefined1 *puVar6; lVar1 = *param_1; if (param_1[1] - lVar1 == 0x7fffffffffffffff) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } uVar5 = (param_1[1] - lVar1) + 1; uVar2 = param_1[2] - lVar1; uVar4 = uVar5; if ((uVar2 <= 0x7fffffffffffffff - (uVar2 >> 1)) && (uVar4 = (uVar2 >> 1) + uVar2, uVar4 < uVar5)) { uVar4 = uVar5; } if (uVar4 < 0x1000) { if (uVar4 == 0) { _Dst_00 = (undefined1 *)0x0; } else { _Dst_00 = (undefined1 *)FUN_18000c554(uVar4); } } else { if (uVar4 + 0x27 <= uVar4) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar3 = FUN_18000c554(uVar4 + 0x27); if (lVar3 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } _Dst_00 = (undefined1 *)(lVar3 + 0x27U & 0xffffffffffffffe0); *(longlong *)(_Dst_00 + -8) = lVar3; } puVar6 = _Dst_00 + ((longlong)param_2 - lVar1); *puVar6 = *param_3; _Src = (void *)*param_1; if (param_2 == (void *)param_1[1]) { _Size = param_1[1] - (longlong)_Src; _Dst = _Dst_00; param_2 = _Src; } else { memmove(_Dst_00,_Src,(longlong)param_2 - (longlong)_Src); _Dst = puVar6 + 1; _Size = param_1[1] - (longlong)param_2; } memmove(_Dst,param_2,_Size); FUN_180007280(param_1,(longlong)_Dst_00,uVar5,uVar4); return puVar6; } ================================================================== ### EXPORT FUNC 180007e70 (119 bytes) name=FUN_180007e70 undefined8 * FUN_180007e70(undefined8 *param_1,ulonglong param_2) { void *_Memory; *param_1 = TCMVirtualDevice::vftable; _Mtx_destroy_in_situ(param_1 + 0x10); _Cnd_destroy_in_situ(param_1 + 7); FUN_180002550((longlong)(param_1 + 1)); _Memory = (void *)param_1[1]; param_1[1] = 0; free(_Memory); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180007ef0 (17 bytes) name=FUN_180007ef0 undefined1 FUN_180007ef0(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && (param_3 == 'x')) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180007f10 (60 bytes) name=FUN_180007f10 void FUN_180007f10(longlong param_1,longlong *param_2) { longlong lVar1; undefined8 *puVar2; ulonglong uVar3; lVar1 = *param_2; if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'x')) { if (*(char *)(lVar1 + 8) == '\0') { uVar3 = 0xffffffff; } else { uVar3 = (ulonglong)CONCAT11(*(undefined1 *)(lVar1 + 9),*(undefined1 *)(lVar1 + 10)); } puVar2 = *(undefined8 **)(param_1 + 0xd8); if (puVar2 != (undefined8 *)0x0) { /* WARNING: Could not recover jumptable at 0x000180007f48. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)*puVar2)(puVar2,uVar3); return; } } return; } ================================================================== ### EXPORT FUNC 180007f50 (17 bytes) name=FUN_180007f50 undefined1 FUN_180007f50(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && (param_3 == 'P')) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180007f70 (57 bytes) name=FUN_180007f70 void FUN_180007f70(longlong param_1,longlong *param_2) { longlong lVar1; int iVar2; lVar1 = *param_2; if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'P')) { *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; iVar2 = _Cnd_broadcast(param_1 + 0x38); if (iVar2 != 0) { std::_Throw_C_error(iVar2); } } return; } ================================================================== ### EXPORT FUNC 180007fb0 (17 bytes) name=FUN_180007fb0 undefined1 FUN_180007fb0(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && (param_3 == '1')) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180007fd0 (57 bytes) name=FUN_180007fd0 void FUN_180007fd0(longlong param_1,longlong *param_2) { longlong lVar1; int iVar2; lVar1 = *param_2; if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == '1')) { *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; iVar2 = _Cnd_broadcast(param_1 + 0x38); if (iVar2 != 0) { std::_Throw_C_error(iVar2); } } return; } ================================================================== ### EXPORT FUNC 180008010 (17 bytes) name=FUN_180008010 undefined1 FUN_180008010(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && (param_3 == 'A')) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180008030 (57 bytes) name=FUN_180008030 void FUN_180008030(longlong param_1,longlong *param_2) { longlong lVar1; int iVar2; lVar1 = *param_2; if ((*(char *)(lVar1 + 4) == '\x02') && (*(char *)(lVar1 + 5) == 'A')) { *(bool *)(param_1 + 0x30) = *(char *)(lVar1 + 8) == '\x01'; iVar2 = _Cnd_broadcast(param_1 + 0x38); if (iVar2 != 0) { std::_Throw_C_error(iVar2); } } return; } ================================================================== ### EXPORT FUNC 180008070 (52 bytes) name=FUN_180008070 undefined8 * FUN_180008070(undefined8 *param_1,uint param_2) { FUN_1800080b0(param_1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 1800080b0 (470 bytes) name=FUN_1800080b0 void FUN_1800080b0(undefined8 *param_1) { undefined8 *_Memory; void *pvVar1; void *pvVar2; _Memory = (undefined8 *)param_1[0x1e]; *param_1 = EloTCMScannerDevice::vftable; param_1[0x1b] = EloTCMScannerDevice::vftable; if (_Memory != (undefined8 *)0x0) { *_Memory = HoneywellUpdaterDevice::vftable; _Mtx_destroy_in_situ(_Memory + 0x14); _Cnd_destroy_in_situ(_Memory + 0xb); FUN_180002550((longlong)(_Memory + 4)); pvVar1 = (void *)_Memory[4]; _Memory[4] = 0; free(pvVar1); pvVar1 = (void *)_Memory[1]; if (pvVar1 != (void *)0x0) { pvVar2 = pvVar1; if ((0xfff < (ulonglong)(_Memory[3] - (longlong)pvVar1)) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008280; free(pvVar2); _Memory[1] = 0; _Memory[2] = 0; _Memory[3] = 0; } free(_Memory); param_1[0x1e] = 0; } pvVar1 = (void *)param_1[0x23]; if (pvVar1 != (void *)0x0) { pvVar2 = pvVar1; if ((0xfff < (ulonglong)(param_1[0x25] - (longlong)pvVar1)) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008280; free(pvVar2); param_1[0x23] = 0; param_1[0x24] = 0; param_1[0x25] = 0; } if (0xf < (ulonglong)param_1[0x22]) { pvVar1 = (void *)param_1[0x1f]; pvVar2 = pvVar1; if ((0xfff < param_1[0x22] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { LAB_180008280: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar2); } param_1[0x21] = 0; param_1[0x22] = 0xf; *(undefined1 *)(param_1 + 0x1f) = 0; *param_1 = TCMVirtualDevice::vftable; _Mtx_destroy_in_situ(param_1 + 0x10); _Cnd_destroy_in_situ(param_1 + 7); FUN_180002550((longlong)(param_1 + 1)); pvVar1 = (void *)param_1[1]; param_1[1] = 0; free(pvVar1); return; } ================================================================== ### EXPORT FUNC 180008290 (50 bytes) name=FUN_180008290 ulonglong FUN_180008290(undefined8 param_1,char param_2,byte param_3) { uint uVar1; ulonglong in_RAX; undefined7 in_register_00000081; if (param_2 == -0x7f) { if (param_3 == 3) { LAB_1800082bf: return CONCAT71((int7)(in_RAX >> 8),1); } } else if (param_2 == '\x02') { uVar1 = (int)CONCAT71(in_register_00000081,param_3) - 0x60; in_RAX = (ulonglong)uVar1; if ((((byte)uVar1 < 0x10) && ((0xa3ffU >> (uVar1 & 0x1f) & 1) != 0)) || ((byte)(param_3 - 8) < 4)) goto LAB_1800082bf; } return in_RAX & 0xffffffffffffff00; } ================================================================== ### EXPORT FUNC 1800082d0 (1870 bytes) name=FUN_1800082d0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1800082d0(longlong param_1,longlong *param_2) { undefined1 *puVar1; undefined2 *puVar2; char cVar3; char cVar4; undefined1 uVar5; void *_Src; ulonglong uVar6; undefined *******pppppppuVar7; undefined8 *puVar8; undefined8 *puVar9; int iVar10; undefined8 uVar11; undefined8 **ppuVar12; longlong lVar13; longlong lVar14; ulonglong uVar15; undefined ********ppppppppuVar16; ulonglong uVar17; undefined1 *puVar18; size_t sVar19; longlong lVar20; undefined1 auStack_a8 [32]; undefined1 local_88 [8]; undefined8 *local_80; undefined *******local_78; undefined *******pppppppuStack_70; undefined *******local_68; undefined *******local_60; undefined *******pppppppuStack_58; undefined1 *local_50; undefined1 *puStack_48; ulonglong local_40; ulonglong local_38; local_38 = DAT_180015010 ^ (ulonglong)auStack_a8; lVar20 = *param_2; cVar3 = *(char *)(lVar20 + 4); cVar4 = *(char *)(lVar20 + 5); lVar14 = 0; if (cVar3 == -0x7f) { if (cVar4 != '\x03') { return; } LAB_180008341: local_50 = (undefined1 *)0x0; puStack_48 = (undefined1 *)0xf; local_60 = (undefined *******)((ulonglong)local_60 & 0xffffffffffffff00); lVar13 = 8; lVar20 = (longlong)(((int)param_2[1] - (int)lVar20) + -1); if (8 < lVar20) { do { puVar18 = local_50; if (local_50 < puStack_48) { ppppppppuVar16 = &local_60; if ((undefined1 *)0xf < puStack_48) { ppppppppuVar16 = (undefined ********)local_60; } puVar1 = (undefined1 *)((longlong)ppppppppuVar16 + (longlong)local_50); local_50 = local_50 + 1; *puVar1 = *(undefined1 *)(lVar13 + *param_2); ((undefined1 *)((longlong)ppppppppuVar16 + 1))[(longlong)puVar18] = 0; } else { FUN_180002770(&local_60,local_50,puStack_48,*(undefined1 *)(lVar13 + *param_2)); } lVar13 = lVar13 + 1; } while (lVar13 < lVar20); } if (local_50 < puStack_48) { ppppppppuVar16 = &local_60; if ((undefined1 *)0xf < puStack_48) { ppppppppuVar16 = (undefined ********)local_60; } puVar2 = (undefined2 *)((longlong)ppppppppuVar16 + (longlong)local_50); local_50 = local_50 + 1; *puVar2 = 0; } else { FUN_180002770(&local_60,local_50,puStack_48,0); } if (*(code **)(param_1 + 0xe0) != (code *)0x0) { ppppppppuVar16 = &local_60; if ((undefined1 *)0xf < puStack_48) { ppppppppuVar16 = (undefined ********)local_60; } (**(code **)(param_1 + 0xe0))(ppppppppuVar16); } if ((cVar3 == '\x02') && (cVar4 == '`')) { local_78 = (undefined *******)0x0; pppppppuStack_70 = (undefined *******)0x0; local_68 = (undefined *******)0x0; local_88[0] = 1; uVar11 = 0; FUN_180007d30((longlong *)&local_78,(void *)0x0,local_88); puVar8 = (undefined8 *)FUN_18000c554(0x28); *puVar8 = 0; puVar8[1] = 0; puVar8[2] = 0; puVar8[3] = 0; puVar8[4] = 0; *puVar8 = FTDICommand::vftable; puVar8[1] = 0; puVar8[2] = 0; puVar8[3] = 0; local_80 = puVar8; FUN_180009d70((longlong)puVar8,uVar11,0x60,(longlong *)&local_78); if (*(longlong **)(param_1 + 0xd0) != (longlong *)0x0) { (**(code **)(**(longlong **)(param_1 + 0xd0) + 8))(); } (**(code **)*puVar8)(puVar8,1); if ((undefined ********)local_78 != (undefined ********)0x0) { ppppppppuVar16 = (undefined ********)local_78; if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && (ppppppppuVar16 = (undefined ********)local_78[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)) )) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(ppppppppuVar16); } } if ((undefined1 *)0xf < puStack_48) { ppppppppuVar16 = (undefined ********)local_60; if (((undefined1 *)0xfff < puStack_48 + 1) && (ppppppppuVar16 = (undefined ********)local_60[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)local_60 + (-8 - (longlong)ppppppppuVar16)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(ppppppppuVar16); } if (cVar3 != '\x02') { return; } } else { if (cVar3 != '\x02') { return; } if (cVar4 == '`') goto LAB_180008341; } if ((byte)(cVar4 + 0x9fU) < 9) { *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; iVar10 = _Cnd_broadcast(param_1 + 0x38); if (iVar10 == 0) { return; } std::_Throw_C_error(iVar10); return; } if (cVar4 == '\b') { local_60 = (undefined *******)FTDICommand::vftable; pppppppuStack_58 = (undefined *******)0x0; local_50 = (undefined1 *)0x0; puStack_48 = (undefined1 *)0x0; _Src = (void *)*param_2; iVar10 = ((int)param_2[1] - (int)_Src) + -9; if (iVar10 < 0) { iVar10 = 0; } local_40 = (ulonglong)CONCAT24(*(undefined2 *)((longlong)_Src + 4),iVar10); uVar15 = param_2[1] - (longlong)_Src; if (uVar15 != 0) { FUN_180002ba0((ulonglong *)&pppppppuStack_58,uVar15); } pppppppuVar7 = pppppppuStack_58; uVar17 = uVar15; memmove(pppppppuStack_58,_Src,uVar15); local_50 = (undefined1 *)((longlong)pppppppuVar7 + uVar15); local_78 = (undefined *******)0x0; pppppppuStack_70 = (undefined *******)0x0; local_68 = (undefined *******)0x0; FUN_18000a360((longlong)&local_60,(longlong *)&local_78); pppppppuVar7 = pppppppuStack_70; puVar8 = (undefined8 *)(param_1 + 0xf8); *(undefined8 *)(param_1 + 0x108) = 0; puVar9 = puVar8; if (0xf < *(ulonglong *)(param_1 + 0x110)) { puVar9 = (undefined8 *)*puVar8; } *(undefined1 *)puVar9 = 0; for (ppppppppuVar16 = (undefined ********)local_78; ppppppppuVar16 != (undefined ********)pppppppuVar7; ppppppppuVar16 = (undefined ********)((longlong)ppppppppuVar16 + 1)) { uVar5 = *(undefined1 *)ppppppppuVar16; uVar15 = *(ulonglong *)(param_1 + 0x108); uVar6 = *(ulonglong *)(param_1 + 0x110); if (uVar15 < uVar6) { *(ulonglong *)(param_1 + 0x108) = uVar15 + 1; puVar9 = puVar8; if (0xf < uVar6) { puVar9 = (undefined8 *)*puVar8; } *(undefined1 *)((longlong)puVar9 + uVar15) = uVar5; *(undefined1 *)((longlong)puVar9 + uVar15 + 1) = 0; } else { FUN_180002770(puVar8,uVar6,uVar17,uVar5); } } iVar10 = _Cnd_broadcast(param_1 + 0x38); if (iVar10 != 0) { std::_Throw_C_error(iVar10); } if ((undefined ********)local_78 != (undefined ********)0x0) { ppppppppuVar16 = (undefined ********)local_78; if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && (ppppppppuVar16 = (undefined ********)local_78[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(ppppppppuVar16); local_78 = (undefined *******)0x0; pppppppuStack_70 = (undefined *******)0x0; local_68 = (undefined *******)0x0; } if ((undefined ********)pppppppuStack_58 == (undefined ********)0x0) { return; } ppppppppuVar16 = (undefined ********)pppppppuStack_58; if ((0xfff < (ulonglong)((longlong)puStack_48 - (longlong)pppppppuStack_58)) && (ppppppppuVar16 = (undefined ********)pppppppuStack_58[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)pppppppuStack_58 + (-8 - (longlong)ppppppppuVar16)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } goto LAB_1800087fa; } if (cVar4 == '\t') { *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; iVar10 = _Cnd_broadcast(param_1 + 0x38); if (iVar10 == 0) { return; } std::_Throw_C_error(iVar10); } if (cVar4 == '\n') { *(bool *)(param_1 + 0x30) = *(char *)(*param_2 + 8) == '\x01'; iVar10 = _Cnd_broadcast(param_1 + 0x38); if (iVar10 == 0) { return; } std::_Throw_C_error(iVar10); } if (cVar4 == '\v') { iVar10 = ((int)param_2[1] - (int)*param_2) + -9; local_78 = (undefined *******)0x0; pppppppuStack_70 = (undefined *******)0x0; local_68 = (undefined *******)0x0; if (0 < iVar10) { do { puVar18 = (undefined1 *)(*param_2 + 8 + lVar14); if (pppppppuStack_70 == local_68) { FUN_180007d30((longlong *)&local_78,pppppppuStack_70,puVar18); } else { *(undefined1 *)pppppppuStack_70 = *puVar18; pppppppuStack_70 = (undefined *******)((longlong)pppppppuStack_70 + 1); } lVar14 = lVar14 + 1; } while (lVar14 < iVar10); } (**(code **)**(undefined8 **)(param_1 + 0xf0))(*(undefined8 **)(param_1 + 0xf0),&local_78); if ((undefined ********)local_78 == (undefined ********)0x0) { return; } ppppppppuVar16 = (undefined ********)local_78; if ((0xfff < (ulonglong)((longlong)local_68 - (longlong)local_78)) && (ppppppppuVar16 = (undefined ********)local_78[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)local_78 + (-8 - (longlong)ppppppppuVar16)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } goto LAB_1800087fa; } if (cVar4 != 'o') { return; } uVar5 = *(undefined1 *)(*param_2 + 8); local_50 = (undefined1 *)0x0; puStack_48 = (undefined1 *)0xf; local_60 = (undefined *******)((ulonglong)local_60 & 0xffffffffffffff00); FUN_180002610((longlong *)&local_60,&PTR_18000fde8,0); switch(uVar5) { case 0x61: ppuVar12 = &DAT_180015180; sVar19 = DAT_180015190; if (0xf < DAT_180015198) { ppuVar12 = (undefined8 **)DAT_180015180; } break; case 0x62: ppuVar12 = &DAT_1800150e0; sVar19 = DAT_1800150f0; if (0xf < DAT_1800150f8) { ppuVar12 = (undefined8 **)DAT_1800150e0; } break; case 99: ppuVar12 = &DAT_180015160; sVar19 = DAT_180015170; if (0xf < DAT_180015178) { ppuVar12 = (undefined8 **)DAT_180015160; } break; case 100: ppuVar12 = &DAT_1800151c0; sVar19 = DAT_1800151d0; if (0xf < DAT_1800151d8) { ppuVar12 = (undefined8 **)DAT_1800151c0; } break; case 0x65: ppuVar12 = &DAT_180015120; sVar19 = DAT_180015130; if (0xf < DAT_180015138) { ppuVar12 = (undefined8 **)DAT_180015120; } break; case 0x66: ppuVar12 = &DAT_1800150c0; sVar19 = DAT_1800150d0; if (0xf < DAT_1800150d8) { ppuVar12 = (undefined8 **)DAT_1800150c0; } break; case 0x67: ppuVar12 = &DAT_180015140; sVar19 = DAT_180015150; if (0xf < DAT_180015158) { ppuVar12 = (undefined8 **)DAT_180015140; } break; case 0x68: ppuVar12 = &DAT_180015080; sVar19 = DAT_180015090; if (0xf < DAT_180015098) { ppuVar12 = (undefined8 **)DAT_180015080; } break; case 0x69: ppuVar12 = &DAT_1800151a0; sVar19 = DAT_1800151b0; if (0xf < DAT_1800151b8) { ppuVar12 = (undefined8 **)DAT_1800151a0; } break; default: goto switchD_180008858_default; } FUN_180002610((longlong *)&local_60,ppuVar12,sVar19); switchD_180008858_default: if (puStack_48 < (undefined1 *)0x10) { return; } ppppppppuVar16 = (undefined ********)local_60; if (((undefined1 *)0xfff < puStack_48 + 1) && (ppppppppuVar16 = (undefined ********)local_60[-1], (undefined1 *)0x1f < (undefined1 *)((longlong)local_60 + (-8 - (longlong)ppppppppuVar16)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } LAB_1800087fa: free(ppppppppuVar16); return; } ================================================================== ### EXPORT FUNC 180008a50 (395 bytes) name=FUN_180008a50 void FUN_180008a50(longlong param_1,undefined8 *param_2,ulonglong param_3,undefined8 param_4) { longlong *plVar1; longlong lVar2; void *pvVar3; undefined8 *puVar4; void *local_48; void *pvStack_40; longlong local_38; void **local_30; undefined8 *local_28; local_48 = (void *)0x0; pvStack_40 = (void *)0x0; pvVar3 = (void *)0x0; local_38 = 0; puVar4 = (undefined8 *)*param_2; if (puVar4 != (undefined8 *)param_2[1]) { param_3 = (longlong)param_2[1] - (longlong)puVar4; if (param_3 < 0x1000) { if (param_3 != 0) { pvVar3 = (void *)FUN_18000c554(param_3); } } else { if (param_3 + 0x27 <= param_3) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar2 = FUN_18000c554(param_3 + 0x27); if (lVar2 == 0) goto LAB_180008bb6; pvVar3 = (void *)(lVar2 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)pvVar3 - 8) = lVar2; } lVar2 = (longlong)pvVar3 + param_3; local_48 = pvVar3; pvStack_40 = pvVar3; local_38 = lVar2; memmove(pvVar3,puVar4,param_3); param_2 = puVar4; pvStack_40 = (void *)lVar2; } local_30 = &local_48; if (DAT_180015ff0 != '\0') { FUN_180007960("transmitData\n",param_2,param_3,param_4); } puVar4 = (undefined8 *)FUN_18000c554(0x28); *puVar4 = 0; puVar4[1] = 0; puVar4[2] = 0; puVar4[3] = 0; puVar4[4] = 0; *puVar4 = FTDICommand::vftable; puVar4[1] = 0; puVar4[2] = 0; puVar4[3] = 0; local_28 = puVar4; FUN_180009d70((longlong)puVar4,param_2,0xb,(longlong *)&local_48); plVar1 = *(longlong **)(param_1 + -8); if (plVar1 != (longlong *)0x0) { (**(code **)(*plVar1 + 8))(plVar1,puVar4[1],puVar4[2] - puVar4[1]); } (**(code **)*puVar4)(puVar4,1); if (local_48 != (void *)0x0) { pvVar3 = local_48; if ((0xfff < (ulonglong)(local_38 - (longlong)local_48)) && (pvVar3 = *(void **)((longlong)local_48 + -8), 0x1f < (ulonglong)((longlong)local_48 + (-8 - (longlong)pvVar3)))) { LAB_180008bb6: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar3); } return; } ================================================================== ### EXPORT FUNC 180008be0 (231 bytes) name=FUN_180008be0 undefined8 * FUN_180008be0(undefined8 *param_1,uint param_2) { void *pvVar1; void *_Memory; *param_1 = EloTCMScheduleTaskDevice::vftable; pvVar1 = (void *)param_1[0x1c]; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(param_1[0x1e] - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); param_1[0x1c] = 0; param_1[0x1d] = 0; param_1[0x1e] = 0; } *param_1 = TCMVirtualDevice::vftable; _Mtx_destroy_in_situ(param_1 + 0x10); _Cnd_destroy_in_situ(param_1 + 7); FUN_180002550((longlong)(param_1 + 1)); pvVar1 = (void *)param_1[1]; param_1[1] = 0; free(pvVar1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180008cd0 (21 bytes) name=FUN_180008cd0 undefined1 FUN_180008cd0(undefined8 param_1,char param_2,char param_3) { if ((param_2 == '\x02') && ((byte)(param_3 - 0x21U) < 6)) { return 1; } return 0; } ================================================================== ### EXPORT FUNC 180008cf0 (430 bytes) name=FUN_180008cf0 void FUN_180008cf0(ulonglong param_1,longlong *param_2) { undefined1 *puVar1; char extraout_AL; char extraout_AL_00; char extraout_AL_01; char extraout_AL_02; char extraout_AL_03; char cVar2; uint uVar3; int iVar4; ulonglong uVar5; longlong *plVar6; longlong lVar7; undefined1 *puVar8; puVar8 = (undefined1 *)*param_2; cVar2 = puVar8[5]; if (puVar8[4] == '\x02') { uVar5 = param_1; plVar6 = param_2; if (cVar2 == '!') { *(bool *)(param_1 + 0x30) = puVar8[8] == '\x01'; uVar3 = _Cnd_broadcast(param_1 + 0x38); if (uVar3 == 0) { return; } uVar5 = (ulonglong)uVar3; std::_Throw_C_error(uVar3); cVar2 = extraout_AL; } if (cVar2 == '\"') { *(uint *)(param_1 + 0xd8) = CONCAT31(CONCAT21(CONCAT11(puVar8[8],puVar8[9]),puVar8[10]),puVar8[0xb]); *(undefined1 *)(param_1 + 0x30) = 1; uVar3 = _Cnd_broadcast(param_1 + 0x38); if (uVar3 == 0) { return; } uVar5 = (ulonglong)uVar3; std::_Throw_C_error(uVar3); cVar2 = extraout_AL_00; } if (cVar2 == '#') { *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; uVar3 = _Cnd_broadcast(uVar5 + 0x38); if (uVar3 == 0) { return; } uVar5 = (ulonglong)uVar3; std::_Throw_C_error(uVar3); cVar2 = extraout_AL_01; } if (cVar2 == '$') { *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; uVar3 = _Cnd_broadcast(uVar5 + 0x38); if (uVar3 == 0) { return; } uVar5 = (ulonglong)uVar3; std::_Throw_C_error(uVar3); cVar2 = extraout_AL_02; } if (cVar2 == '%') { iVar4 = ((int)plVar6[1] - (int)puVar8) + -9; *(longlong *)(param_1 + 0xe8) = *(longlong *)(param_1 + 0xe0); if (0 < iVar4) { lVar7 = 0; do { puVar8 = (undefined1 *)(*param_2 + 8 + lVar7); puVar1 = *(undefined1 **)(param_1 + 0xe8); if (puVar1 == *(undefined1 **)(param_1 + 0xf0)) { FUN_180007d30((longlong *)(param_1 + 0xe0),puVar1,puVar8); } else { *puVar1 = *puVar8; *(longlong *)(param_1 + 0xe8) = *(longlong *)(param_1 + 0xe8) + 1; } lVar7 = lVar7 + 1; } while (lVar7 < iVar4); } *(undefined1 *)(param_1 + 0x30) = 1; uVar3 = _Cnd_broadcast(param_1 + 0x38); if (uVar3 == 0) { return; } uVar5 = (ulonglong)uVar3; std::_Throw_C_error(uVar3); cVar2 = extraout_AL_03; } if (cVar2 == '&') { *(bool *)(uVar5 + 0x30) = puVar8[8] == '\x01'; iVar4 = _Cnd_broadcast(uVar5 + 0x38); if (iVar4 != 0) { std::_Throw_C_error(iVar4); } } } return; } ================================================================== ### EXPORT FUNC 180008ea0 (337 bytes) name=FUN_180008ea0 undefined8 * FUN_180008ea0(undefined8 *param_1,ulonglong param_2) { void *pvVar1; void *pvVar2; *param_1 = EloTCMUpdaterDevice::vftable; if (*(int *)(param_1 + 0x24) != 0) { /* WARNING: Subroutine does not return */ terminate(); } pvVar1 = (void *)param_1[0x20]; if (pvVar1 != (void *)0x0) { pvVar2 = pvVar1; if ((0xfff < (ulonglong)(param_1[0x22] - (longlong)pvVar1)) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) goto LAB_180008feb; free(pvVar2); param_1[0x20] = 0; param_1[0x21] = 0; param_1[0x22] = 0; } if (0xf < (ulonglong)param_1[0x1f]) { pvVar1 = (void *)param_1[0x1c]; pvVar2 = pvVar1; if ((0xfff < param_1[0x1f] + 1) && (pvVar2 = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)pvVar2)))) { LAB_180008feb: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar2); } param_1[0x1e] = 0; param_1[0x1f] = 0xf; *(undefined1 *)(param_1 + 0x1c) = 0; *param_1 = TCMVirtualDevice::vftable; _Mtx_destroy_in_situ(param_1 + 0x10); _Cnd_destroy_in_situ(param_1 + 7); FUN_180002550((longlong)(param_1 + 1)); pvVar1 = (void *)param_1[1]; param_1[1] = 0; free(pvVar1); if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 180009000 (467 bytes) name=FUN_180009000 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_180009000(longlong param_1,undefined8 *param_2,undefined8 param_3,longlong param_4) { longlong lVar1; code *pcVar2; int iVar3; undefined8 *puVar4; longlong lVar5; undefined **ppuVar6; longlong *plVar7; undefined1 auStack_68 [32]; undefined8 *local_48; undefined8 uStack_40; longlong local_38; int local_30; ulonglong local_28; local_28 = DAT_180015010 ^ (ulonglong)auStack_68; local_48 = param_2; if (DAT_180015ff0 != '\0') { FUN_180007960("askVersion\n",param_2,param_3,param_4); } ppuVar6 = &PTR_18000fde8; FUN_180002610((longlong *)(param_1 + 0xe0),&PTR_18000fde8,0); local_48 = (undefined8 *)FUN_18000c554(0x28); *local_48 = 0; local_48[1] = 0; local_48[2] = 0; local_48[3] = 0; local_48[4] = 0; puVar4 = FUN_18000a240(local_48,ppuVar6,4); if (puVar4 != (undefined8 *)0x0) { plVar7 = *(longlong **)(param_1 + 0xd0); if (plVar7 != (longlong *)0x0) { param_4 = *plVar7; (**(code **)(param_4 + 8))(plVar7,puVar4[1],puVar4[2] - puVar4[1]); } (**(code **)*puVar4)(puVar4,1); } lVar1 = param_1 + 0x80; uStack_40 = 0; local_48 = (undefined8 *)lVar1; iVar3 = _Mtx_lock(lVar1); if (iVar3 != 0) { std::_Throw_C_error(iVar3); pcVar2 = (code *)swi(3); puVar4 = (undefined8 *)(*pcVar2)(); return puVar4; } uStack_40 = CONCAT71(uStack_40._1_7_,1); lVar5 = _Xtime_get_ticks(); lVar5 = (lVar5 + 1000000) * 100; local_38 = lVar5 / 1000000000; local_30 = (int)lVar5 + (int)local_38 * -1000000000; iVar3 = _Mtx_current_owns(lVar1); if (iVar3 == 0) { std::_Throw_Cpp_error(4); pcVar2 = (code *)swi(3); puVar4 = (undefined8 *)(*pcVar2)(); return puVar4; } plVar7 = &local_38; lVar5 = lVar1; iVar3 = _Cnd_timedwait(param_1 + 0x38); if (iVar3 == 0) { lVar5 = param_1 + 0xe0; if (0xf < *(ulonglong *)(param_1 + 0xf8)) { lVar5 = *(longlong *)(param_1 + 0xe0); } FUN_180007960("askVersion:%s\n",lVar5,plVar7,param_4); } else { if (iVar3 != 2) { std::_Throw_C_error(iVar3); pcVar2 = (code *)swi(3); puVar4 = (undefined8 *)(*pcVar2)(); return puVar4; } FUN_180007960("askVersion timeout\n",lVar5,plVar7,param_4); } FUN_180002e60(param_2,(undefined8 *)(param_1 + 0xe0)); iVar3 = _Mtx_unlock(lVar1); if (iVar3 != 0) { std::_Throw_C_error(iVar3); } return param_2; } ================================================================== ### EXPORT FUNC 1800091e0 (799 bytes) name=FUN_1800091e0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1800091e0(longlong param_1,undefined8 param_2,ulonglong param_3,longlong param_4) { void *_Src; longlong lVar1; int iVar2; ulonglong uVar3; longlong lVar4; code *pcVar5; undefined8 uVar6; undefined8 uVar7; void *pvVar8; int iVar9; int iVar10; uint uVar11; undefined1 auStack_98 [32]; ulonglong local_78; void *local_70; void *pvStack_68; longlong local_60; void *local_50; void *pvStack_48; longlong local_40; ulonglong local_38; local_38 = DAT_180015010 ^ (ulonglong)auStack_98; if (*(longlong *)(param_1 + 0x108) == *(longlong *)(param_1 + 0x100)) { pcVar5 = *(code **)(param_1 + 0xd8); if (pcVar5 == (code *)0x0) { return; } uVar7 = 0; uVar6 = 0; } else { uVar3 = FUN_180009510(param_1,param_2,param_3,param_4); if ((char)uVar3 == '\0') { FUN_180007960("beginUpdate fail\n",param_2,param_3,param_4); pcVar5 = *(code **)(param_1 + 0xd8); if (pcVar5 == (code *)0x0) { return; } uVar7 = 1; uVar6 = 0; } else { if (*(code **)(param_1 + 0xd8) != (code *)0x0) { param_2 = 1; (**(code **)(param_1 + 0xd8))(1); } local_78 = (*(longlong *)(param_1 + 0x108) - *(longlong *)(param_1 + 0x100)) + 0x7fU >> 7; uVar11 = 0; if (0 < (int)local_78) { iVar9 = 0; iVar10 = 0x62; do { lVar4 = *(longlong *)(param_1 + 0x100); iVar2 = ((int)*(undefined8 *)(param_1 + 0x108) - (int)lVar4) - iVar9; if (0x80 < iVar2) { iVar2 = 0x80; } local_50 = (void *)0x0; pvStack_48 = (void *)0x0; local_40 = 0; uVar3 = (ulonglong)iVar2; if (iVar2 != 0) { FUN_180002ba0((ulonglong *)&local_50,uVar3); } lVar1 = local_40; _Src = local_50; memmove(local_50,(void *)(iVar9 + lVar4),uVar3); pvStack_48 = (void *)((longlong)_Src + uVar3); local_70 = (void *)0x0; pvStack_68 = (void *)0x0; local_60 = 0; if (_Src != pvStack_48) { if (uVar3 < 0x1000) { if (uVar3 == 0) { local_70 = (void *)0x0; } else { local_70 = (void *)FUN_18000c554(uVar3); } } else { if (uVar3 + 0x27 <= uVar3) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar4 = FUN_18000c554(uVar3 + 0x27); if (lVar4 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } local_70 = (void *)(lVar4 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)local_70 - 8) = lVar4; } lVar4 = (longlong)local_70 + uVar3; pvStack_68 = local_70; local_60 = lVar4; memmove(local_70,_Src,uVar3); pvStack_68 = (void *)lVar4; } param_3 = (ulonglong)uVar11; uVar3 = FUN_180009850(param_1,(longlong *)&local_70,param_3,param_4); iVar2 = (int)local_78; if ((char)uVar3 == '\0') { FUN_180007960("transmitData fail\n",(longlong)iVar10 % (longlong)iVar2 & 0xffffffff, param_3,param_4); if (*(code **)(param_1 + 0xd8) != (code *)0x0) { (**(code **)(param_1 + 0xd8))(0,iVar10 / iVar2 + 1); } if (_Src == (void *)0x0) { return; } pvVar8 = _Src; if (((ulonglong)(lVar1 - (longlong)_Src) < 0x1000) || (pvVar8 = *(void **)((longlong)_Src + -8), (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar8)) < 0x20)) { free(pvVar8); return; } LAB_1800094a8: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } if (*(code **)(param_1 + 0xd8) != (code *)0x0) { (**(code **)(param_1 + 0xd8))(1,iVar10 / iVar2 + 1); } if (_Src != (void *)0x0) { pvVar8 = _Src; if ((0xfff < (ulonglong)(lVar1 - (longlong)_Src)) && (pvVar8 = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar8)))) goto LAB_1800094a8; free(pvVar8); } uVar11 = uVar11 + 1; param_2 = 0x80; iVar9 = iVar9 + 0x80; iVar10 = iVar10 + 0x62; } while ((int)uVar11 < iVar2); } uVar3 = FUN_1800096b0(param_1,param_2,param_3,param_4); if ((char)uVar3 == '\0') { FUN_180007960("completeUpdate fail\n",param_2,param_3,param_4); pcVar5 = *(code **)(param_1 + 0xd8); if (pcVar5 == (code *)0x0) { return; } uVar7 = 99; uVar6 = 0; } else { pcVar5 = *(code **)(param_1 + 0xd8); if (pcVar5 == (code *)0x0) { return; } uVar7 = 100; uVar6 = 1; } } } (*pcVar5)(uVar6,uVar7); return; } ================================================================== ### EXPORT FUNC 180009510 (402 bytes) name=FUN_180009510 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_180009510(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { longlong lVar1; byte bVar2; code *pcVar3; int iVar4; undefined8 *puVar5; ulonglong uVar6; longlong lVar7; longlong *plVar8; undefined1 auStack_58 [32]; undefined8 *local_38; undefined8 uStack_30; longlong local_28; int local_20; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStack_58; if (DAT_180015ff0 != '\0') { FUN_180007960("beginUpdate\n",param_2,param_3,param_4); } *(undefined1 *)(param_1 + 0x30) = 0; local_38 = (undefined8 *)FUN_18000c554(0x28); *local_38 = 0; local_38[1] = 0; local_38[2] = 0; local_38[3] = 0; local_38[4] = 0; puVar5 = FUN_18000a240(local_38,param_2,5); if (puVar5 != (undefined8 *)0x0) { plVar8 = *(longlong **)(param_1 + 0xd0); if (plVar8 != (longlong *)0x0) { param_4 = *plVar8; (**(code **)(param_4 + 8))(plVar8,puVar5[1],puVar5[2] - puVar5[1]); } (**(code **)*puVar5)(puVar5,1); } lVar1 = param_1 + 0x80; uStack_30 = 0; local_38 = (undefined8 *)lVar1; iVar4 = _Mtx_lock(lVar1); if (iVar4 != 0) { std::_Throw_C_error(iVar4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } uStack_30 = CONCAT71(uStack_30._1_7_,1); lVar7 = _Xtime_get_ticks(); lVar7 = (lVar7 + 30000000) * 100; local_28 = lVar7 / 1000000000; local_20 = (int)lVar7 + (int)local_28 * -1000000000; iVar4 = _Mtx_current_owns(lVar1); if (iVar4 == 0) { std::_Throw_Cpp_error(4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } plVar8 = &local_28; lVar7 = lVar1; iVar4 = _Cnd_timedwait(param_1 + 0x38); if (iVar4 == 0) { FUN_180007960("beginUpdate:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar8,param_4); } else { if (iVar4 != 2) { std::_Throw_C_error(iVar4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } FUN_180007960("beginUpdate timeout\n",lVar7,plVar8,param_4); } bVar2 = *(byte *)(param_1 + 0x30); iVar4 = _Mtx_unlock(lVar1); if (iVar4 != 0) { std::_Throw_C_error(iVar4); } return (ulonglong)bVar2; } ================================================================== ### EXPORT FUNC 1800096b0 (402 bytes) name=FUN_1800096b0 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_1800096b0(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { longlong lVar1; byte bVar2; code *pcVar3; int iVar4; undefined8 *puVar5; ulonglong uVar6; longlong lVar7; longlong *plVar8; undefined1 auStack_58 [32]; undefined8 *local_38; undefined8 uStack_30; longlong local_28; int local_20; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStack_58; if (DAT_180015ff0 != '\0') { FUN_180007960("completeUpdate\n",param_2,param_3,param_4); } *(undefined1 *)(param_1 + 0x30) = 0; local_38 = (undefined8 *)FUN_18000c554(0x28); *local_38 = 0; local_38[1] = 0; local_38[2] = 0; local_38[3] = 0; local_38[4] = 0; puVar5 = FUN_18000a240(local_38,param_2,6); if (puVar5 != (undefined8 *)0x0) { plVar8 = *(longlong **)(param_1 + 0xd0); if (plVar8 != (longlong *)0x0) { param_4 = *plVar8; (**(code **)(param_4 + 8))(plVar8,puVar5[1],puVar5[2] - puVar5[1]); } (**(code **)*puVar5)(puVar5,1); } lVar1 = param_1 + 0x80; uStack_30 = 0; local_38 = (undefined8 *)lVar1; iVar4 = _Mtx_lock(lVar1); if (iVar4 != 0) { std::_Throw_C_error(iVar4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } uStack_30 = CONCAT71(uStack_30._1_7_,1); lVar7 = _Xtime_get_ticks(); lVar7 = (lVar7 + 150000000) * 100; local_28 = lVar7 / 1000000000; local_20 = (int)lVar7 + (int)local_28 * -1000000000; iVar4 = _Mtx_current_owns(lVar1); if (iVar4 == 0) { std::_Throw_Cpp_error(4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } plVar8 = &local_28; lVar7 = lVar1; iVar4 = _Cnd_timedwait(param_1 + 0x38); if (iVar4 == 0) { FUN_180007960("completeUpdate:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar8,param_4); } else { if (iVar4 != 2) { std::_Throw_C_error(iVar4); pcVar3 = (code *)swi(3); uVar6 = (*pcVar3)(); return uVar6; } FUN_180007960("completeUpdate timeout\n",lVar7,plVar8,param_4); } bVar2 = *(byte *)(param_1 + 0x30); iVar4 = _Mtx_unlock(lVar1); if (iVar4 != 0) { std::_Throw_C_error(iVar4); } return (ulonglong)bVar2; } ================================================================== ### EXPORT FUNC 180009850 (494 bytes) name=FUN_180009850 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_180009850(longlong param_1,longlong *param_2,ulonglong param_3,undefined8 param_4) { longlong lVar1; byte bVar2; void *pvVar3; code *pcVar4; int iVar5; undefined8 *puVar6; ulonglong uVar7; longlong lVar8; void *_Memory; longlong *plVar9; longlong *plVar10; undefined1 auStackY_78 [32]; longlong local_30; int local_28; ulonglong local_20; local_20 = DAT_180015010 ^ (ulonglong)auStackY_78; plVar9 = param_2; uVar7 = param_3; if (DAT_180015ff0 != '\0') { plVar9 = (longlong *)(param_3 & 0xffffffff); FUN_180007960("transmitData %d\n",plVar9,param_3,param_4); } *(undefined1 *)(param_1 + 0x30) = 0; puVar6 = (undefined8 *)FUN_18000c554(0x28); *puVar6 = 0; puVar6[1] = 0; puVar6[2] = 0; puVar6[3] = 0; puVar6[4] = 0; plVar10 = param_2; puVar6 = FUN_180009fa0(puVar6,plVar9,uVar7,param_2,(int)param_3 + 0x8001); if (puVar6 != (undefined8 *)0x0) { plVar9 = *(longlong **)(param_1 + 0xd0); if (plVar9 != (longlong *)0x0) { plVar10 = (longlong *)*plVar9; (*(code *)plVar10[1])(plVar9,puVar6[1],puVar6[2] - puVar6[1]); } (**(code **)*puVar6)(puVar6,1); } lVar1 = param_1 + 0x80; iVar5 = _Mtx_lock(lVar1); if (iVar5 == 0) { lVar8 = _Xtime_get_ticks(); lVar8 = (lVar8 + 5000000) * 100; local_30 = lVar8 / 1000000000; local_28 = (int)lVar8 + (int)local_30 * -1000000000; iVar5 = _Mtx_current_owns(lVar1); if (iVar5 == 0) { std::_Throw_Cpp_error(4); pcVar4 = (code *)swi(3); uVar7 = (*pcVar4)(); return uVar7; } plVar9 = &local_30; lVar8 = lVar1; iVar5 = _Cnd_timedwait(param_1 + 0x38); if (iVar5 == 0) { FUN_180007960("transmitData:%d\n",(ulonglong)*(byte *)(param_1 + 0x30),plVar9,plVar10); } else { if (iVar5 != 2) { std::_Throw_C_error(iVar5); pcVar4 = (code *)swi(3); uVar7 = (*pcVar4)(); return uVar7; } FUN_180007960("transmitData timeout\n",lVar8,plVar9,plVar10); } bVar2 = *(byte *)(param_1 + 0x30); iVar5 = _Mtx_unlock(lVar1); if (iVar5 != 0) { std::_Throw_C_error(iVar5); } pvVar3 = (void *)*param_2; if (pvVar3 != (void *)0x0) { _Memory = pvVar3; if ((0xfff < (ulonglong)(param_2[2] - (longlong)pvVar3)) && (_Memory = *(void **)((longlong)pvVar3 + -8), 0x1f < (ulonglong)((longlong)pvVar3 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); *param_2 = 0; param_2[1] = 0; param_2[2] = 0; } return (ulonglong)bVar2; } std::_Throw_C_error(iVar5); pcVar4 = (code *)swi(3); uVar7 = (*pcVar4)(); return uVar7; } ================================================================== ### EXPORT FUNC 180009a40 (36 bytes) name=FUN_180009a40 undefined1 FUN_180009a40(undefined8 param_1,char param_2,char param_3) { bool bVar1; bool bVar2; if (param_2 == '\x02') { bVar1 = (byte)(param_3 - 4U) < 3; bVar2 = (byte)(param_3 - 4U) == 3; } else { if (param_2 != -0x7f) { return 0; } bVar1 = (byte)(param_3 - 10U) < 2; bVar2 = (byte)(param_3 - 10U) == 2; } if (!bVar1 && !bVar2) { return 0; } return 1; } ================================================================== ### EXPORT FUNC 180009a70 (755 bytes) name=FUN_180009a70 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_180009a70(longlong param_1,undefined8 *param_2) { undefined8 *puVar1; char cVar2; undefined1 uVar3; ulonglong uVar4; void *pvVar5; char extraout_AL; char extraout_AL_00; char cVar6; char extraout_AL_01; char extraout_AL_02; int iVar7; undefined8 *puVar8; undefined1 *puVar9; void *pvVar10; ulonglong uVar11; undefined1 *puVar12; ulonglong uVar13; undefined1 auStack_88 [32]; undefined1 *local_68; undefined1 *puStack_60; longlong local_58; undefined **local_50; void *pvStack_48; longlong local_40; longlong lStack_38; ulonglong local_30; ulonglong local_28; local_28 = DAT_180015010 ^ (ulonglong)auStack_88; pvVar10 = (void *)*param_2; cVar2 = *(char *)((longlong)pvVar10 + 4); cVar6 = *(char *)((longlong)pvVar10 + 5); if (cVar2 == '\x02') { if (cVar6 == '\x04') { local_50 = FTDICommand::vftable; pvStack_48 = (void *)0x0; local_40 = 0; lStack_38 = 0; uVar11 = param_2[1] - (longlong)pvVar10; iVar7 = (int)uVar11 + -9; if (iVar7 < 0) { iVar7 = 0; } local_30 = (ulonglong)CONCAT24(*(undefined2 *)((longlong)pvVar10 + 4),iVar7); if (uVar11 != 0) { FUN_180002ba0((ulonglong *)&pvStack_48,uVar11); } pvVar5 = pvStack_48; uVar13 = uVar11; memmove(pvStack_48,pvVar10,uVar11); local_40 = (longlong)pvVar5 + uVar11; local_68 = (undefined1 *)0x0; puStack_60 = (undefined1 *)0x0; local_58 = 0; FUN_18000a360((longlong)&local_50,(longlong *)&local_68); puVar9 = puStack_60; puVar1 = (undefined8 *)(param_1 + 0xe0); *(undefined8 *)(param_1 + 0xf0) = 0; puVar8 = puVar1; if (0xf < *(ulonglong *)(param_1 + 0xf8)) { puVar8 = (undefined8 *)*puVar1; } *(undefined1 *)puVar8 = 0; for (puVar12 = local_68; puVar12 != puVar9; puVar12 = puVar12 + 1) { uVar3 = *puVar12; uVar11 = *(ulonglong *)(param_1 + 0xf0); uVar4 = *(ulonglong *)(param_1 + 0xf8); if (uVar11 < uVar4) { *(ulonglong *)(param_1 + 0xf0) = uVar11 + 1; puVar8 = puVar1; if (0xf < uVar4) { puVar8 = (undefined8 *)*puVar1; } *(undefined1 *)((longlong)puVar8 + uVar11) = uVar3; *(undefined1 *)((longlong)puVar8 + uVar11 + 1) = 0; } else { FUN_180002770(puVar1,uVar4,uVar13,uVar3); } } iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 != 0) { std::_Throw_C_error(iVar7); } if (local_68 != (undefined1 *)0x0) { puVar9 = local_68; if ((0xfff < (ulonglong)(local_58 - (longlong)local_68)) && (puVar9 = *(undefined1 **)(local_68 + -8), (undefined1 *)0x1f < local_68 + (-8 - (longlong)puVar9))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(puVar9); local_68 = (undefined1 *)0x0; puStack_60 = (undefined1 *)0x0; local_58 = 0; } if (pvStack_48 != (void *)0x0) { pvVar10 = pvStack_48; if ((0xfff < (ulonglong)(lStack_38 - (longlong)pvStack_48)) && (pvVar10 = *(void **)((longlong)pvStack_48 + -8), 0x1f < (ulonglong)((longlong)pvStack_48 + (-8 - (longlong)pvVar10)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar10); } } else { if (cVar6 == '\x05') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 == 0) { return; } std::_Throw_C_error(iVar7); cVar6 = extraout_AL; } if (cVar6 == '\x06') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 == 0) { return; } std::_Throw_C_error(iVar7); cVar6 = extraout_AL_00; } if (cVar6 == '\a') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 != 0) { std::_Throw_C_error(iVar7); } } } } else if (cVar2 == -0x7f) { if (cVar6 == '\f') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 == 0) { return; } std::_Throw_C_error(iVar7); cVar6 = extraout_AL_01; } if (cVar6 == '\n') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 == 0) { return; } std::_Throw_C_error(iVar7); cVar6 = extraout_AL_02; } if (cVar6 == '\v') { *(bool *)(param_1 + 0x30) = *(char *)((longlong)pvVar10 + 8) == '\x01'; iVar7 = _Cnd_broadcast(param_1 + 0x38); if (iVar7 != 0) { std::_Throw_C_error(iVar7); } } } return; } ================================================================== ### EXPORT FUNC 180009d70 (549 bytes) name=FUN_180009d70 void FUN_180009d70(longlong param_1,undefined8 param_2,undefined1 param_3,longlong *param_4) { longlong *plVar1; void *_Dst; int iVar2; longlong lVar3; longlong lVar4; char cVar5; ulonglong uVar6; char cVar7; ulonglong uVar8; int iVar9; uint uVar10; char cVar11; longlong lVar12; plVar1 = (longlong *)(param_1 + 8); iVar2 = (int)param_4[1] - (int)*param_4; *(int *)(param_1 + 0x20) = iVar2; *(undefined1 *)(param_1 + 0x24) = 2; *(undefined1 *)(param_1 + 0x25) = param_3; _Dst = *(void **)(param_1 + 0x10); lVar3 = *plVar1; uVar8 = (ulonglong)(iVar2 + 9); uVar6 = (longlong)_Dst - lVar3; if (uVar8 < uVar6) { lVar3 = lVar3 + uVar8; LAB_180009dfd: *(longlong *)(param_1 + 0x10) = lVar3; } else if (uVar6 < uVar8) { if (uVar8 <= (ulonglong)(*(longlong *)(param_1 + 0x18) - lVar3)) { memset(_Dst,0,uVar8 - uVar6); lVar3 = (uVar8 - uVar6) + (longlong)_Dst; goto LAB_180009dfd; } FUN_18000a400(plVar1,uVar8); } cVar7 = '\0'; iVar9 = 3; *(undefined1 *)*plVar1 = 0x7e; *(char *)(*plVar1 + 1) = (char)((uint)(iVar2 + 5) >> 8); *(char *)(*plVar1 + 2) = (char)(iVar2 + 5); lVar3 = *plVar1; if ((ulonglong)(*(longlong *)(param_1 + 0x10) - lVar3) < 3) { iVar9 = (int)*(longlong *)(param_1 + 0x10) - (int)lVar3; } lVar12 = (longlong)iVar9; cVar5 = '\0'; uVar6 = 0; cVar11 = '\0'; if (0 < lVar12) { uVar8 = uVar6; if (lVar12 < 2) { LAB_180009e80: cVar7 = *(char *)(uVar8 + lVar3); } else { do { cVar5 = cVar5 + *(char *)(uVar8 + lVar3); cVar11 = cVar11 + *(char *)(uVar8 + 1 + lVar3); uVar8 = uVar8 + 2; } while ((longlong)uVar8 < lVar12 + -1); if ((longlong)uVar8 < lVar12) goto LAB_180009e80; } cVar7 = cVar7 + cVar5 + cVar11; } *(char *)(lVar3 + 3) = cVar7; *(undefined1 *)(*plVar1 + 4) = 2; *(undefined1 *)(*plVar1 + 5) = param_3; *(char *)(*plVar1 + 6) = (char)((uint)DAT_180015038 >> 8); *(char *)(*plVar1 + 7) = (char)DAT_180015038; uVar8 = uVar6; if (param_4[1] != *param_4) { do { uVar10 = (int)uVar8 + 1; *(undefined1 *)(uVar6 + 8 + *plVar1) = *(undefined1 *)(uVar6 + *param_4); uVar6 = uVar6 + 1; uVar8 = (ulonglong)uVar10; } while ((ulonglong)(longlong)(int)uVar10 < (ulonglong)(param_4[1] - *param_4)); } iVar2 = iVar2 + 8; lVar3 = *plVar1; uVar6 = (ulonglong)iVar2; cVar7 = '\0'; if ((ulonglong)(*(longlong *)(param_1 + 0x10) - lVar3) < uVar6) { iVar2 = (int)*(longlong *)(param_1 + 0x10) - (int)lVar3; } cVar5 = '\0'; lVar12 = (longlong)iVar2; cVar11 = '\0'; if (lVar12 < 5) goto LAB_180009f5b; lVar4 = 4; if (lVar12 < 6) { LAB_180009f50: cVar7 = *(char *)(lVar3 + lVar4); } else { do { cVar5 = cVar5 + *(char *)(lVar3 + lVar4); cVar11 = cVar11 + *(char *)(lVar3 + 1 + lVar4); lVar4 = lVar4 + 2; } while (lVar4 < lVar12 + -1); if (lVar4 < lVar12) goto LAB_180009f50; } cVar7 = cVar7 + cVar5 + cVar11; LAB_180009f5b: iVar2 = 1; if (DAT_180015038 + 1 < 0x8000) { iVar2 = DAT_180015038 + 1; } *(char *)(uVar6 + lVar3) = cVar7; DAT_180015038 = iVar2; return; } ================================================================== ### EXPORT FUNC 180009fa0 (527 bytes) name=FUN_180009fa0 undefined8 * FUN_180009fa0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,longlong *param_4, undefined4 param_5) { void *_Dst; longlong lVar1; int iVar2; ulonglong uVar3; longlong lVar4; int iVar5; char cVar6; void *pvVar7; uint uVar8; ulonglong uVar9; char cVar10; char cVar11; longlong lVar12; *param_1 = FTDICommand::vftable; uVar9 = 0; param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; iVar2 = (int)param_4[1] - (int)*param_4; *(int *)(param_1 + 4) = iVar2; *(undefined2 *)((longlong)param_1 + 0x24) = 0x702; pvVar7 = (void *)(longlong)(iVar2 + 9); _Dst = (void *)param_1[2]; if (pvVar7 < _Dst) { param_1[2] = pvVar7; } else if (_Dst < pvVar7) { if (iVar2 + 9 == 0) { memset(_Dst,0,-(longlong)_Dst); param_1[2] = 0; } else { FUN_18000a400(param_1 + 1,(ulonglong)pvVar7); } } *(undefined1 *)param_1[1] = 0x7e; *(char *)(param_1[1] + 1) = (char)((uint)(iVar2 + 5) >> 8); *(char *)(param_1[1] + 2) = (char)(iVar2 + 5); cVar11 = '\0'; lVar1 = param_1[1]; iVar5 = 3; if ((ulonglong)(param_1[2] - lVar1) < 3) { iVar5 = (int)(param_1[2] - lVar1); } cVar6 = '\0'; cVar10 = '\0'; lVar12 = (longlong)iVar5; if (0 < iVar5) { uVar3 = uVar9; if (lVar12 < 2) { LAB_18000a0b0: cVar11 = *(char *)(uVar3 + lVar1); } else { do { cVar6 = cVar6 + *(char *)(uVar3 + lVar1); cVar10 = cVar10 + *(char *)(uVar3 + 1 + lVar1); uVar3 = uVar3 + 2; } while ((longlong)uVar3 < lVar12 + -1); if ((longlong)uVar3 < lVar12) goto LAB_18000a0b0; } cVar11 = cVar11 + cVar6 + cVar10; } *(char *)(lVar1 + 3) = cVar11; *(undefined1 *)(param_1[1] + 4) = 2; *(undefined1 *)(param_1[1] + 5) = 7; *(char *)(param_1[1] + 6) = (char)((uint)param_5 >> 8); *(char *)(param_1[1] + 7) = (char)param_5; uVar3 = uVar9; if (param_4[1] != *param_4) { do { *(undefined1 *)(param_1[1] + 8 + uVar3) = *(undefined1 *)(uVar3 + *param_4); uVar8 = (int)uVar9 + 1; uVar9 = (ulonglong)uVar8; uVar3 = uVar3 + 1; } while ((ulonglong)(longlong)(int)uVar8 < (ulonglong)(param_4[1] - *param_4)); } iVar2 = iVar2 + 8; cVar11 = '\0'; lVar1 = param_1[1]; cVar6 = '\0'; cVar10 = '\0'; iVar5 = (int)(param_1[2] - lVar1); if ((ulonglong)(longlong)iVar2 <= (ulonglong)(param_1[2] - lVar1)) { iVar5 = iVar2; } lVar12 = (longlong)iVar5; if (lVar12 < 5) goto LAB_18000a18b; lVar4 = 4; if (lVar12 < 6) { LAB_18000a180: cVar11 = *(char *)(lVar4 + lVar1); } else { do { cVar6 = cVar6 + *(char *)(lVar4 + lVar1); cVar10 = cVar10 + *(char *)(lVar4 + 1 + lVar1); lVar4 = lVar4 + 2; } while (lVar4 < lVar12 + -1); if (lVar4 < lVar12) goto LAB_18000a180; } cVar11 = cVar11 + cVar6 + cVar10; LAB_18000a18b: *(char *)(iVar2 + lVar1) = cVar11; return param_1; } ================================================================== ### EXPORT FUNC 18000a1b0 (132 bytes) name=FUN_18000a1b0 undefined8 * FUN_18000a1b0(undefined8 *param_1,uint param_2) { void *pvVar1; void *_Memory; *param_1 = FTDICommand::vftable; pvVar1 = (void *)param_1[1]; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; } if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 18000a240 (166 bytes) name=FUN_18000a240 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 * FUN_18000a240(undefined8 *param_1,undefined8 param_2,undefined1 param_3) { void *_Memory; undefined1 auStack_58 [32]; undefined8 *local_38; void *local_30; undefined8 uStack_28; longlong local_20; ulonglong local_18; local_18 = DAT_180015010 ^ (ulonglong)auStack_58; *param_1 = FTDICommand::vftable; param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; local_30 = (void *)0x0; uStack_28 = 0; local_20 = 0; local_38 = param_1; FUN_180009d70((longlong)param_1,param_2,param_3,(longlong *)&local_30); if (local_30 != (void *)0x0) { _Memory = local_30; if ((0xfff < (ulonglong)(local_20 - (longlong)local_30)) && (_Memory = *(void **)((longlong)local_30 + -8), 0x1f < (ulonglong)((longlong)local_30 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } return param_1; } ================================================================== ### EXPORT FUNC 18000a2f0 (99 bytes) name=FUN_18000a2f0 void FUN_18000a2f0(undefined8 *param_1) { void *pvVar1; void *_Memory; *param_1 = FTDICommand::vftable; pvVar1 = (void *)param_1[1]; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (ulonglong)(param_1[3] - (longlong)pvVar1)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); param_1[1] = 0; param_1[2] = 0; param_1[3] = 0; } return; } ================================================================== ### EXPORT FUNC 18000a360 (155 bytes) name=FUN_18000a360 longlong * FUN_18000a360(longlong param_1,longlong *param_2) { undefined1 *puVar1; ulonglong uVar2; uint uVar3; ulonglong uVar4; undefined1 *puVar5; uVar2 = 0; *param_2 = 0; param_2[1] = 0; *param_2 = 0; param_2[1] = 0; param_2[2] = 0; uVar4 = uVar2; if (0 < *(int *)(param_1 + 0x20)) { do { puVar5 = (undefined1 *)(*(longlong *)(param_1 + 8) + 8 + uVar2); puVar1 = (undefined1 *)param_2[1]; if (puVar1 == (undefined1 *)param_2[2]) { FUN_180007d30(param_2,puVar1,puVar5); } else { *puVar1 = *puVar5; param_2[1] = param_2[1] + 1; } uVar3 = (int)uVar4 + 1; uVar2 = uVar2 + 1; uVar4 = (ulonglong)uVar3; } while ((int)uVar3 < *(int *)(param_1 + 0x20)); } return param_2; } ================================================================== ### EXPORT FUNC 18000a400 (255 bytes) name=FUN_18000a400 void FUN_18000a400(longlong *param_1,ulonglong param_2) { longlong lVar1; longlong lVar2; longlong lVar3; ulonglong uVar4; ulonglong uVar5; void *_Dst; if (0x7fffffffffffffff < param_2) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } lVar1 = param_1[1]; lVar2 = *param_1; uVar4 = param_1[2] - *param_1; uVar5 = param_2; if ((uVar4 <= 0x7fffffffffffffff - (uVar4 >> 1)) && (uVar5 = (uVar4 >> 1) + uVar4, uVar5 < param_2)) { uVar5 = param_2; } if (uVar5 < 0x1000) { if (uVar5 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(uVar5); } } else { if (uVar5 + 0x27 <= uVar5) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar3 = FUN_18000c554(uVar5 + 0x27); if (lVar3 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar3; } memset((void *)((longlong)_Dst + (lVar1 - lVar2)),0,param_2 - (lVar1 - lVar2)); memmove(_Dst,(void *)*param_1,param_1[1] - *param_1); FUN_180007280(param_1,(longlong)_Dst,param_2,uVar5); return; } ================================================================== ### EXPORT FUNC 18000a510 (1101 bytes) name=FUN_18000a510 undefined8 * FUN_18000a510(undefined8 *param_1) { undefined8 *puVar1; longlong *plVar2; undefined8 *puVar3; longlong *plVar4; undefined8 *local_res10; *param_1 = TCMDevice::vftable; param_1[1] = SerialPort::vftable; param_1[2] = 0; param_1[3] = 0; *(undefined1 *)(param_1 + 4) = 0; param_1[5] = 0; param_1[6] = 0; puVar1 = param_1 + 7; *puVar1 = 0; param_1[8] = 0; param_1[9] = 0; param_1[10] = 0; param_1[0xb] = 0; puVar3 = (undefined8 *)FUN_18000c554(0x10); puVar3[1] = 0; *puVar1 = puVar3; *puVar3 = puVar1; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; puVar3 = (undefined8 *)FUN_18000c554(0xd8); local_res10 = puVar3; memset(puVar3,0,0xd8); FUN_18000b410(puVar3); *puVar3 = EloTCMAudioDevice::vftable; *(undefined1 *)(puVar3 + 6) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0xd8); local_res10 = puVar3; memset(puVar3,0,0xd8); FUN_18000b410(puVar3); *puVar3 = EloTCMLightDevice::vftable; *(undefined1 *)(puVar3 + 6) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0xd8); local_res10 = puVar3; memset(puVar3,0,0xd8); FUN_18000b410(puVar3); *puVar3 = EloTCMPowerDevice::vftable; *(undefined1 *)(puVar3 + 6) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0x138); local_res10 = puVar3; memset(puVar3,0,0x138); FUN_18000b410(puVar3); *puVar3 = EloTCMScannerDevice::vftable; puVar3[0x1b] = EloTCMScannerDevice::vftable; puVar3[0x21] = 0; puVar3[0x22] = 0xf; *(undefined1 *)(puVar3 + 0x1f) = 0; puVar3[0x23] = 0; puVar3[0x24] = 0; puVar3[0x25] = 0; puVar3[0x1c] = 0; puVar3[0x1d] = 0; puVar3[0x1e] = 0; *(undefined1 *)(puVar3 + 6) = 0; *(undefined1 *)(puVar3 + 0x26) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0xf8); local_res10 = puVar3; memset(puVar3,0,0xf8); FUN_18000b410(puVar3); *puVar3 = EloTCMScheduleTaskDevice::vftable; puVar3[0x1c] = 0; puVar3[0x1d] = 0; puVar3[0x1e] = 0; *(undefined1 *)(puVar3 + 6) = 0; *(undefined4 *)(puVar3 + 0x1b) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0x128); local_res10 = puVar3; memset(puVar3,0,0x128); FUN_18000b410(puVar3); *puVar3 = EloTCMUpdaterDevice::vftable; puVar3[0x1e] = 0; puVar3[0x1f] = 0xf; *(undefined1 *)(puVar3 + 0x1c) = 0; puVar3[0x20] = 0; puVar3[0x21] = 0; puVar3[0x22] = 0; puVar3[0x23] = 0; puVar3[0x24] = 0; puVar3[0x1b] = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0xd8); local_res10 = puVar3; memset(puVar3,0,0xd8); FUN_18000b410(puVar3); *puVar3 = EloMotorDevice::vftable; *(undefined1 *)(puVar3 + 6) = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; local_res10 = puVar3; } puVar3 = (undefined8 *)FUN_18000c554(0xe0); local_res10 = puVar3; memset(puVar3,0,0xe0); FUN_18000b410(puVar3); *puVar3 = EloProximityDevice::vftable; *(undefined1 *)(puVar3 + 6) = 0; puVar3[0x1b] = 0; puVar1 = (undefined8 *)param_1[0xd]; if (puVar1 == (undefined8 *)param_1[0xe]) { local_res10 = puVar3; FUN_18000b280(param_1 + 0xc,puVar1,&local_res10); } else { *puVar1 = puVar3; param_1[0xd] = param_1[0xd] + 8; } plVar2 = (longlong *)param_1[0xd]; for (plVar4 = (longlong *)param_1[0xc]; plVar4 != plVar2; plVar4 = plVar4 + 1) { *(undefined8 **)(*plVar4 + 0xd0) = param_1 + 1; } param_1[6] = param_1; return param_1; } ================================================================== ### EXPORT FUNC 18000a960 (614 bytes) name=FUN_18000a960 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ ulonglong FUN_18000a960(longlong param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { bool bVar1; longlong *plVar2; byte bVar3; int iVar4; void *_Buf1; ulonglong uVar5; longlong *plVar6; undefined8 uVar7; undefined8 *******_Buf; undefined1 auStack_138 [32]; longlong *local_118; longlong local_110 [4]; undefined8 local_f0 [4]; undefined8 ******local_d0 [2]; ulonglong local_c0; ulonglong local_b8; longlong *local_b0; longlong *plStack_a8; longlong local_a0; longlong local_98 [4]; undefined8 local_78 [4]; undefined8 local_58 [4]; ulonglong local_38; local_38 = DAT_180015010 ^ (ulonglong)auStack_138; local_b0 = (longlong *)0x0; plStack_a8 = (longlong *)0x0; local_a0 = 0; FUN_180002fd0((longlong *)&local_b0); plVar2 = plStack_a8; plVar6 = local_b0; do { if (plVar6 == plVar2) { uVar5 = 0; LAB_18000aacd: plVar2 = plStack_a8; plVar6 = local_b0; if (local_b0 != (longlong *)0x0) { for (; plVar6 != plVar2; plVar6 = plVar6 + 0xc) { FUN_180002ca0(plVar6); } plVar6 = local_b0; if ((0xfff < (ulonglong)(((local_a0 - (longlong)local_b0) / 0x60) * 0x60)) && (plVar6 = (longlong *)local_b0[-1], 0x1f < (ulonglong)((longlong)local_b0 + (-8 - (longlong)plVar6)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(plVar6); } return uVar5; } FUN_180002e60(local_98,plVar6); FUN_180002e60(local_78,plVar6 + 4); FUN_180002e60(local_58,plVar6 + 8); local_118 = local_110; FUN_180002e60(local_110,local_98); FUN_180002e60(local_f0,local_78); FUN_180002e60(local_d0,local_58); uVar5 = local_c0; _Buf = local_d0; if (0xf < local_b8) { _Buf = (undefined8 *******)local_d0[0]; } if (0x20 < local_c0) { for (_Buf1 = memchr(_Buf,0x46,local_c0 - 0x20); _Buf1 != (void *)0x0; _Buf1 = memchr((void *)((longlong)_Buf1 + 1),0x46, (longlong)_Buf + ((uVar5 - 0x20) - ((longlong)_Buf1 + 1)))) { iVar4 = memcmp(_Buf1,"FTDIBUS\\COMPORT&VID_0403&PID_6001",0x21); if (iVar4 == 0) { if ((longlong)_Buf1 - (longlong)_Buf != -1) { bVar1 = true; goto LAB_18000aa9e; } break; } } } bVar1 = false; LAB_18000aa9e: FUN_180002ca0(local_110); if (bVar1) { uVar7 = 0x1c200; bVar3 = (**(code **)(*(longlong *)(param_1 + 8) + 0x18))((longlong *)(param_1 + 8),local_98); uVar5 = (ulonglong)bVar3; FUN_180007960("TCM Open:%d\n",uVar5,uVar7,param_4); FUN_180002ca0(local_98); goto LAB_18000aacd; } FUN_180002ca0(local_98); plVar6 = plVar6 + 0xc; } while( true ); } ================================================================== ### EXPORT FUNC 18000abd0 (172 bytes) name=FUN_18000abd0 longlong * FUN_18000abd0(longlong param_1,longlong *param_2) { undefined1 *puVar1; ulonglong uVar2; longlong lVar3; longlong lVar4; undefined1 local_18 [4]; undefined4 local_14; longlong *local_10; lVar4 = 0; *param_2 = 0; param_2[1] = 0; *param_2 = 0; param_2[1] = 0; param_2[2] = 0; local_14 = 1; lVar3 = 4; local_10 = param_2; do { uVar2 = *(longlong *)(param_1 + 0x50) + lVar4; local_18[0] = *(undefined1 *) ((ulonglong)((uint)uVar2 & 0xf) + *(longlong *) (*(longlong *)(param_1 + 0x40) + (uVar2 >> 4 & *(longlong *)(param_1 + 0x48) - 1U) * 8)); puVar1 = (undefined1 *)param_2[1]; if (puVar1 == (undefined1 *)param_2[2]) { FUN_180007d30(param_2,puVar1,local_18); } else { *puVar1 = local_18[0]; param_2[1] = param_2[1] + 1; } lVar4 = lVar4 + 1; lVar3 = lVar3 + -1; } while (lVar3 != 0); return param_2; } ================================================================== ### EXPORT FUNC 18000ac80 (1424 bytes) name=FUN_18000ac80 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_18000ac80(longlong param_1,longlong param_2,int param_3) { longlong *plVar1; undefined1 uVar2; byte bVar3; undefined8 *puVar4; bool bVar5; char cVar6; ulonglong uVar7; undefined8 uVar8; longlong lVar9; char *pcVar10; int iVar11; uint uVar12; longlong lVar13; ulonglong uVar14; void *_Memory; char *pcVar15; int iVar16; void **ppvVar17; char cVar18; uint uVar19; undefined8 *puVar20; void **ppvVar21; void **ppvVar22; void **ppvVar23; void **ppvVar24; char cVar25; byte bVar26; char cVar27; void **ppvVar28; longlong lVar29; undefined1 auStack_98 [32]; byte local_78 [8]; longlong local_70; longlong local_68; void *local_60; void **ppvStack_58; void **local_50; char *local_48; longlong lStack_40; longlong local_38; ulonglong local_30; local_30 = DAT_180015010 ^ (ulonglong)auStack_98; lVar29 = 0; local_70 = param_2; local_68 = param_1; if (0 < param_3) { lVar13 = *(longlong *)(param_1 + 0x58); do { uVar2 = *(undefined1 *)(lVar29 + local_70); uVar7 = *(ulonglong *)(param_1 + 0x50); if ((((int)lVar13 + (int)uVar7 & 0xfU) == 0) && (*(ulonglong *)(param_1 + 0x48) <= lVar13 + 0x10U >> 4)) { FUN_1800028d0(param_1 + 0x38); uVar7 = *(ulonglong *)(param_1 + 0x50); lVar13 = *(longlong *)(param_1 + 0x58); } uVar7 = *(longlong *)(param_1 + 0x48) * 0x10 - 1U & uVar7; *(ulonglong *)(param_1 + 0x50) = uVar7; uVar7 = uVar7 + lVar13; lVar9 = *(longlong *)(param_1 + 0x40); lVar13 = (*(longlong *)(param_1 + 0x48) - 1U & uVar7 >> 4) * 8; if (*(longlong *)(lVar13 + lVar9) == 0) { uVar8 = FUN_18000c554(0x10); *(undefined8 *)(lVar13 + *(longlong *)(param_1 + 0x40)) = uVar8; lVar9 = *(longlong *)(param_1 + 0x40); } *(undefined1 *)((ulonglong)((uint)uVar7 & 0xf) + *(longlong *)(lVar13 + lVar9)) = uVar2; *(longlong *)(param_1 + 0x58) = *(longlong *)(param_1 + 0x58) + 1; lVar13 = *(longlong *)(param_1 + 0x58); lVar29 = lVar29 + 1; } while (lVar29 < param_3); } uVar12 = *(uint *)(param_1 + 0x58); do { if ((int)uVar12 < 9) { return; } ppvVar17 = (void **)0x0; local_48 = (char *)0x0; lStack_40 = 0; local_38 = 0; FUN_18000abd0(param_1,(longlong *)&local_48); if (*local_48 == DAT_180010101) { uVar7 = lStack_40 - (longlong)local_48; iVar11 = (int)uVar7 + -1; cVar18 = '\0'; cVar6 = '\0'; cVar25 = '\0'; cVar27 = '\0'; iVar16 = (int)uVar7; if ((ulonglong)(longlong)iVar11 <= uVar7) { iVar16 = iVar11; } lVar29 = (longlong)iVar16; if (0 < iVar16) { ppvVar23 = ppvVar17; if (lVar29 < 2) { LAB_18000ae17: cVar6 = local_48[(longlong)ppvVar23]; } else { do { cVar25 = cVar25 + local_48[(longlong)ppvVar23]; cVar27 = cVar27 + (local_48 + 1)[(longlong)ppvVar23]; ppvVar23 = (void **)((longlong)ppvVar23 + 2); } while ((longlong)ppvVar23 < lVar29 + -1); if ((longlong)ppvVar23 < lVar29) goto LAB_18000ae17; } cVar18 = cVar6 + cVar25 + cVar27; } if (local_48[uVar7 - 1] != cVar18) goto LAB_18000aee2; uVar19 = CONCAT11(local_48[1],local_48[2]) + 4; if (uVar12 < uVar19) { if (local_48 == (char *)0x0) { return; } pcVar15 = local_48; if (((ulonglong)(local_38 - (longlong)local_48) < 0x1000) || (pcVar15 = *(char **)(local_48 + -8), local_48 + (-8 - (longlong)pcVar15) < (char *)0x20) ) { free(pcVar15); return; } goto LAB_18000b158; } iVar16 = 4; bVar26 = 0; uVar12 = CONCAT11(local_48[1],local_48[2]) - 1; if (0 < (int)uVar12) { uVar7 = (ulonglong)uVar12; do { uVar14 = (longlong)iVar16 + *(longlong *)(param_1 + 0x50); bVar26 = bVar26 + *(char *)((ulonglong)((uint)uVar14 & 0xf) + *(longlong *) (*(longlong *)(param_1 + 0x40) + (uVar14 >> 4 & *(longlong *)(param_1 + 0x48) - 1U) * 8)); iVar16 = iVar16 + 1; uVar7 = uVar7 - 1; } while (uVar7 != 0); } ppvVar24 = *(void ***)(param_1 + 0x50); ppvVar23 = (void **)(ulonglong)((uint)(byte *)((longlong)iVar16 + (longlong)ppvVar24) & 0xf); bVar3 = *(byte *)((longlong)ppvVar23 + *(longlong *) (*(longlong *)(param_1 + 0x40) + (*(longlong *)(param_1 + 0x48) - 1U & (ulonglong)((longlong)iVar16 + (longlong)ppvVar24) >> 4) * 8)); if (bVar26 != bVar3) { if (DAT_180015ff0 != '\0') { FUN_180007960("checksum not same:%.2x, %.2x",(ulonglong)bVar26,(ulonglong)bVar3,ppvVar24); } goto LAB_18000aee2; } local_60 = (void *)0x0; ppvStack_58 = (void **)0x0; local_50 = (void **)0x0; ppvVar22 = ppvVar17; if (uVar19 != 0) { uVar7 = (ulonglong)uVar19; do { local_78[0] = *(byte *)((ulonglong)((uint)ppvVar24 & 0xf) + *(longlong *) (*(longlong *)(param_1 + 0x40) + (*(longlong *)(param_1 + 0x48) - 1U & (ulonglong)ppvVar24 >> 4) * 8)); if (ppvStack_58 == local_50) { ppvVar22 = (void **)local_78; FUN_180007d30((longlong *)&local_60,ppvStack_58,(undefined1 *)ppvVar22); } else { *(byte *)ppvStack_58 = local_78[0]; ppvStack_58 = (void **)((longlong)ppvStack_58 + 1); ppvVar22 = local_50; } plVar1 = (longlong *)(param_1 + 0x58); *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { *(undefined8 *)(param_1 + 0x50) = 0; ppvVar24 = ppvVar17; } else { *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 1; ppvVar24 = *(void ***)(param_1 + 0x50); } uVar7 = uVar7 - 1; ppvVar23 = ppvStack_58; } while (uVar7 != 0); } ppvVar28 = (void **)(ulonglong)*(byte *)((longlong)local_60 + 4); local_78[0] = *(byte *)((longlong)local_60 + 5); ppvVar21 = (void **)(ulonglong)local_78[0]; uVar12 = (uint)CONCAT11(*(undefined1 *)((longlong)local_60 + 6), *(undefined1 *)((longlong)local_60 + 7)); if (DAT_180015ff0 != '\0') { FUN_180007960("\nRecv:",ppvVar23,ppvVar22,ppvVar24); ppvVar23 = ppvVar17; if ((int)ppvStack_58 != (int)local_60 && -1 < (int)ppvStack_58 - (int)local_60) { do { FUN_180007960("%.2X ",(ulonglong)*(byte *)((longlong)local_60 + (longlong)ppvVar17), ppvVar22,ppvVar24); uVar19 = (int)ppvVar23 + 1; ppvVar17 = (void **)((longlong)ppvVar17 + 1); ppvVar23 = (void **)(ulonglong)uVar19; } while ((int)uVar19 < (int)ppvStack_58 - (int)local_60); } ppvVar24 = (void **)(ulonglong)uVar12; ppvVar23 = ppvVar28; FUN_180007960("Main:%.2X Sub:%.2X Frame:%d \n",ppvVar28,ppvVar21,ppvVar24); ppvVar22 = ppvVar21; } bVar26 = local_78[0]; DAT_180015038 = 1; if (uVar12 + 1 < 0x8000) { DAT_180015038 = uVar12 + 1; } bVar5 = false; puVar4 = *(undefined8 **)(param_1 + 0x68); puVar20 = *(undefined8 **)(param_1 + 0x60); if (puVar20 == puVar4) { LAB_18000b079: FUN_180007960("Unhandled:",ppvVar23,ppvVar22,ppvVar24); iVar16 = 0; lVar29 = 0; if ((int)ppvStack_58 != (int)local_60 && -1 < (int)ppvStack_58 - (int)local_60) { do { FUN_180007960("%.2X ",(ulonglong)*(byte *)((longlong)local_60 + lVar29),ppvVar22, ppvVar24); iVar16 = iVar16 + 1; lVar29 = lVar29 + 1; } while (iVar16 < (int)ppvStack_58 - (int)local_60); } FUN_180007960("Main:%.2X Sub:%.2X Frame:%d \n",ppvVar28,(ulonglong)local_78[0], (ulonglong)uVar12); } else { do { plVar1 = (longlong *)*puVar20; ppvVar22 = (void **)(ulonglong)bVar26; ppvVar23 = ppvVar28; cVar6 = (**(code **)*plVar1)(plVar1); if (cVar6 != '\0') { bVar5 = true; ppvVar23 = &local_60; (**(code **)(*plVar1 + 8))(plVar1); } puVar20 = puVar20 + 1; } while (puVar20 != puVar4); param_1 = local_68; if (!bVar5) goto LAB_18000b079; } if (local_60 != (void *)0x0) { _Memory = local_60; if ((0xfff < (ulonglong)((longlong)local_50 - (longlong)local_60)) && (_Memory = *(void **)((longlong)local_60 + -8), 0x1f < (ulonglong)((longlong)local_60 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); local_60 = (void *)0x0; ppvStack_58 = (void **)0x0; local_50 = (void **)0x0; } if (local_48 != (char *)0x0) { pcVar15 = local_48; if (0xfff < (ulonglong)(local_38 - (longlong)local_48)) { pcVar15 = *(char **)(local_48 + -8); pcVar10 = local_48 + (-8 - (longlong)pcVar15); goto joined_r0x00018000b18e; } goto LAB_18000b193; } } else { LAB_18000aee2: plVar1 = (longlong *)(param_1 + 0x58); *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { *(undefined8 *)(param_1 + 0x50) = 0; } else { *(longlong *)(param_1 + 0x50) = *(longlong *)(param_1 + 0x50) + 1; } if (local_48 != (char *)0x0) { pcVar15 = local_48; if (0xfff < (ulonglong)(local_38 - (longlong)local_48)) { pcVar15 = *(char **)(local_48 + -8); pcVar10 = local_48 + (-8 - (longlong)pcVar15); joined_r0x00018000b18e: if ((char *)0x1f < pcVar10) { LAB_18000b158: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } } LAB_18000b193: free(pcVar15); } } uVar12 = *(uint *)(param_1 + 0x58); } while( true ); } ================================================================== ### EXPORT FUNC 18000b220 (91 bytes) name=FID_conflict:~vector_> /* Library Function - Multiple Matches With Different Base Names public: __cdecl std::priority_queue >,struct std::greater >::~priority_queue >,struct std::greater >(void) __ptr64 public: __cdecl std::vector >::~vector >(void) __ptr64 public: __cdecl std::vector >::~vector >(void) __ptr64 public: __cdecl std::vector >::~vector >(void) __ptr64 7 names - too many to list Library: Visual Studio 2019 Release */ void FID_conflict__vector_>(longlong *param_1) { void *pvVar1; void *_Memory; pvVar1 = (void *)*param_1; if (pvVar1 != (void *)0x0) { _Memory = pvVar1; if ((0xfff < (param_1[2] - (longlong)pvVar1 & 0xfffffffffffffff8U)) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); *param_1 = 0; param_1[1] = 0; param_1[2] = 0; } return; } ================================================================== ### EXPORT FUNC 18000b280 (397 bytes) name=FUN_18000b280 undefined8 * FUN_18000b280(longlong *param_1,void *param_2,undefined8 *param_3) { ulonglong uVar1; undefined8 *puVar2; longlong lVar3; void *pvVar4; longlong lVar5; ulonglong uVar6; ulonglong uVar7; undefined8 *_Dst; void *_Memory; undefined8 *_Dst_00; size_t _Size; lVar3 = *param_1; lVar5 = param_1[1] - lVar3 >> 3; if (lVar5 == 0x1fffffffffffffff) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } uVar7 = param_1[2] - lVar3 >> 3; uVar1 = lVar5 + 1; uVar6 = uVar1; if ((uVar7 <= 0x1fffffffffffffff - (uVar7 >> 1)) && (uVar6 = (uVar7 >> 1) + uVar7, uVar6 < uVar1)) { uVar6 = uVar1; } if (0x1fffffffffffffff < uVar6) { LAB_18000b40a: /* WARNING: Subroutine does not return */ FUN_180001750(); } uVar7 = uVar6 * 8; if (uVar7 < 0x1000) { if (uVar7 == 0) { _Dst_00 = (undefined8 *)0x0; } else { _Dst_00 = (undefined8 *)FUN_18000c554(uVar7); } } else { if (uVar7 + 0x27 <= uVar7) goto LAB_18000b40a; lVar5 = FUN_18000c554(uVar7 + 0x27); if (lVar5 == 0) goto LAB_18000b3fd; _Dst_00 = (undefined8 *)(lVar5 + 0x27U & 0xffffffffffffffe0); _Dst_00[-1] = lVar5; } puVar2 = _Dst_00 + ((longlong)param_2 - lVar3 >> 3); *puVar2 = *param_3; pvVar4 = (void *)*param_1; if (param_2 == (void *)param_1[1]) { _Size = param_1[1] - (longlong)pvVar4; _Dst = _Dst_00; param_2 = pvVar4; } else { memmove(_Dst_00,pvVar4,(longlong)param_2 - (longlong)pvVar4); _Dst = puVar2 + 1; _Size = param_1[1] - (longlong)param_2; } memmove(_Dst,param_2,_Size); pvVar4 = (void *)*param_1; if (pvVar4 != (void *)0x0) { _Memory = pvVar4; if ((0xfff < (param_1[2] - (longlong)pvVar4 & 0xfffffffffffffff8U)) && (_Memory = *(void **)((longlong)pvVar4 + -8), 0x1f < (ulonglong)((longlong)pvVar4 + (-8 - (longlong)_Memory)))) { LAB_18000b3fd: /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } *param_1 = (longlong)_Dst_00; param_1[1] = (longlong)(_Dst_00 + uVar1); param_1[2] = (longlong)(_Dst_00 + uVar6); return puVar2; } ================================================================== ### EXPORT FUNC 18000b410 (123 bytes) name=FUN_18000b410 undefined8 * FUN_18000b410(undefined8 *param_1) { undefined8 *puVar1; undefined8 *puVar2; puVar1 = param_1 + 1; *param_1 = TCMVirtualDevice::vftable; *puVar1 = 0; param_1[2] = 0; param_1[3] = 0; param_1[4] = 0; param_1[5] = 0; puVar2 = (undefined8 *)FUN_18000c554(0x10); puVar2[1] = 0; *puVar1 = puVar2; *puVar2 = puVar1; _Cnd_init_in_situ(param_1 + 7); _Mtx_init_in_situ(param_1 + 0x10,2); param_1[0x1a] = 0; return param_1; } ================================================================== ### EXPORT FUNC 18000b490 (3 bytes) name=_guard_check_icall void _guard_check_icall(void) { return; } ================================================================== ### EXPORT FUNC 18000b4a0 (3 bytes) name=FUN_18000b4a0 undefined1 FUN_18000b4a0(void) { return 0; } ================================================================== ### EXPORT FUNC 18000b4b0 (116 bytes) name=FUN_18000b4b0 void FUN_18000b4b0(undefined8 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4, int param_5,longlong param_6) { if (param_5 == 2) { *(undefined4 *)(param_6 + 0x240) = param_2; MAG_GetOutputBMPdataRGB24 (*(undefined4 *)(param_6 + 0x18),*(undefined8 *)(param_6 + 0x220), *(undefined4 *)(param_6 + 0x218),1); if (*(code **)(param_6 + 0x228) != (code *)0x0) { /* WARNING: Could not recover jumptable at 0x00018000b517. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(param_6 + 0x228)) (*(undefined8 *)(param_6 + 0x220),*(undefined4 *)(param_6 + 0x208), *(undefined4 *)(param_6 + 0x20c),3); return; } } return; } ================================================================== ### EXPORT FUNC 18000b530 (442 bytes) name=FUN_18000b530 undefined8 * FUN_18000b530(void) { undefined8 *puVar1; undefined8 *_Dst; undefined8 *puVar2; longlong lVar3; _Dst = DAT_180015ff8; if (DAT_180015ff8 == (undefined8 *)0x0) { _Dst = (undefined8 *)FUN_18000c554(0x2b0); memset(_Dst,0,0x2b0); *_Dst = ThermalController::vftable; *(int *)(_Dst + 1) = 0; _Dst[2] = 0; *(undefined4 *)(_Dst + 3) = 0xffffffff; _Dst[0x3e] = 0; *(undefined4 *)(_Dst + 0x3f) = 0; *(undefined8 *)((longlong)_Dst + 0x1c) = 0; *(undefined8 *)((longlong)_Dst + 0x24) = 0; *(undefined8 *)((longlong)_Dst + 0x2c) = 0; *(undefined8 *)((longlong)_Dst + 0x34) = 0; *(undefined8 *)((longlong)_Dst + 0x3c) = 0; *(undefined8 *)((longlong)_Dst + 0x44) = 0; *(undefined8 *)((longlong)_Dst + 0x4c) = 0; *(undefined8 *)((longlong)_Dst + 0x54) = 0; *(undefined8 *)((longlong)_Dst + 0x5c) = 0; FUN_1800015d0((int *)(_Dst + 1)); _Dst[0x44] = 0; _Dst[0x45] = 0; _Dst[0x47] = 0; *(undefined4 *)((longlong)_Dst + 0x27c) = 0; _Dst[0x48] = 0; _Dst[0x49] = 0x3fef5c28f5c28f5c; _Dst[0x53] = 0; _Dst[0x54] = 0xffffffffffffffff; _Dst[0x51] = 0x4040000000000000; _Dst[0x52] = 0x4044000000000000; _Dst[0x50] = 0x4042800000000000; *(undefined2 *)(_Dst + 0x55) = 0; if (DAT_180015fe8 == (undefined8 *)0x0) { puVar2 = (undefined8 *)FUN_18000c554(0x78); *puVar2 = 0; puVar2[1] = 0; puVar2[2] = 0; puVar2[3] = 0; puVar2[4] = 0; puVar2[5] = 0; puVar2[6] = 0; puVar2[7] = 0; puVar2[8] = 0; puVar2[9] = 0; puVar2[10] = 0; puVar2[0xb] = 0; puVar2[0xc] = 0; puVar2[0xd] = 0; puVar2[0xe] = 0; DAT_180015fe8 = FUN_18000a510(puVar2); } puVar2 = DAT_180015fe8; _Dst[0x46] = DAT_180015fe8; puVar1 = (undefined8 *)puVar2[0xd]; for (puVar2 = (undefined8 *)puVar2[0xc]; puVar2 != puVar1; puVar2 = puVar2 + 1) { lVar3 = __RTDynamicCast(*puVar2,0,&TCMVirtualDevice::RTTI_Type_Descriptor, &EloProximityDevice::RTTI_Type_Descriptor,0); if (lVar3 != 0) { *(undefined8 **)(lVar3 + 0xd8) = _Dst; DAT_180015ff8 = _Dst; return _Dst; } } } DAT_180015ff8 = _Dst; return _Dst; } ================================================================== ### EXPORT FUNC 18000b6f0 (425 bytes) name=FUN_18000b6f0 undefined8 FUN_18000b6f0(longlong param_1,undefined4 *param_2,undefined *param_3,undefined8 param_4) { undefined4 *puVar1; undefined1 uVar2; int iVar3; undefined8 uVar4; ulonglong uVar5; uint7 uVar6; code *pcVar7; if (*(int *)(param_1 + 8) != 0) { MAG_EnumCameras(*(undefined4 *)(param_1 + 0x18)); Sleep(0x32); if (*(int *)(param_1 + 8) != 0) { param_2 = (undefined4 *)0x0; iVar3 = MAG_GetTerminalList(0); if (iVar3 != 0) { param_2 = (undefined4 *)0x0; param_3 = (code *)0x3e8; iVar3 = MAG_LinkCamera(*(undefined4 *)(param_1 + 0x18)); if (iVar3 != 0) { puVar1 = (undefined4 *)(param_1 + 0x1c); param_3 = (code *)0x48; param_2 = puVar1; MAG_GetCamInfo(*(undefined4 *)(param_1 + 0x18)); if (puVar1 != (undefined4 *)0x0) { *(undefined4 *)(param_1 + 0x200) = *puVar1; *(undefined4 *)(param_1 + 0x204) = *(undefined4 *)(param_1 + 0x20); *(undefined4 *)(param_1 + 0x208) = *(undefined4 *)(param_1 + 0x5c); *(undefined4 *)(param_1 + 0x20c) = *(undefined4 *)(param_1 + 0x60); *(undefined4 *)(param_1 + 0x210) = 0x10; *(undefined4 *)(param_1 + 0x214) = *(undefined4 *)(param_1 + 0x60); MAG_GetFixPara(*(undefined4 *)(param_1 + 0x18),param_1 + 0x250); *(undefined4 *)(param_1 + 0x250) = 0x3f266666; *(float *)(param_1 + 0x254) = (float)*(double *)(param_1 + 0x248); MAG_SetFixPara(*(undefined4 *)(param_1 + 0x18),param_1 + 0x250,2); iVar3 = *(int *)(param_1 + 0x208) * *(int *)(param_1 + 0x20c) * 3; *(int *)(param_1 + 0x218) = iVar3; uVar4 = thunk_FUN_18000c554((longlong)iVar3); pcVar7 = FUN_18000b4b0; param_4 = 2; *(undefined8 *)(param_1 + 0x220) = uVar4; param_2 = (undefined4 *)(param_1 + 0x200); iVar3 = MAG_StartProcessImage(*(undefined4 *)(param_1 + 0x18)); if (iVar3 != 0) { param_2 = (undefined4 *)0x2; MAG_SetColorPalette(*(undefined4 *)(param_1 + 0x18)); uVar2 = 1; param_3 = pcVar7; goto LAB_18000b84d; } MAG_DisLinkCamera(); param_3 = pcVar7; } } } } } uVar2 = 0; LAB_18000b84d: *(undefined1 *)(param_1 + 0x2a8) = uVar2; uVar5 = FUN_18000a960(*(longlong *)(param_1 + 0x230),param_2,param_3,param_4); *(char *)(param_1 + 0x2a9) = (char)uVar5; uVar6 = (uint7)(uVar5 >> 8); if ((*(char *)(param_1 + 0x2a8) != '\0') && ((char)uVar5 != '\0')) { return CONCAT71(uVar6,1); } return (ulonglong)uVar6 << 8; } ================================================================== ### EXPORT FUNC 18000b8a0 (177 bytes) name=FUN_18000b8a0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000b8a0(longlong param_1,int param_2) { DWORD DVar1; float fVar2; *(int *)(param_1 + 0x2a0) = param_2; if (*(code **)(param_1 + 0x238) != (code *)0x0) { fVar2 = (float)param_2; if (param_2 < 0) { (**(code **)(param_1 + 0x238))(fVar2); DVar1 = GetTickCount(); if ((60000 < DVar1 - *(int *)(param_1 + 0x244)) && (5000 < DVar1 - *(int *)(param_1 + 0x2a4))) { if (*(int *)(param_1 + 8) != 0) { MAG_TriggerFFC(*(undefined4 *)(param_1 + 0x18)); } DVar1 = GetTickCount(); *(DWORD *)(param_1 + 0x244) = DVar1; return; } } else { DVar1 = GetTickCount(); *(DWORD *)(param_1 + 0x2a4) = DVar1; if (*(int *)(param_1 + 0x27c) != 0) { fVar2 = fVar2 * _DAT_1800101e0; } (**(code **)(param_1 + 0x238))(fVar2); } } return; } ================================================================== ### EXPORT FUNC 18000b960 (460 bytes) name=FUN_18000b960 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ double * FUN_18000b960(longlong param_1,double *param_2,uint param_3,uint param_4) { double dVar1; undefined4 uVar2; int iVar3; int iVar4; uint uVar5; int iVar6; int iVar7; float fVar8; double dVar9; double dVar10; if ((param_3 < 0xa0) && (param_4 < 0x78)) { uVar2 = MAG_GetTemperatureProbe(*(undefined4 *)(param_1 + 0x18),param_3,param_4,3); iVar3 = MAG_FixTemperature(*(undefined4 *)(param_1 + 0x18),uVar2); iVar4 = 0; if (-1 < (int)(param_3 - 1)) { iVar4 = param_3 - 1; } iVar7 = 0x9f; if ((int)(param_3 + 1) < 0x9f) { iVar7 = param_3 + 1; } iVar6 = 0; if (-1 < (int)(param_4 - 1)) { iVar6 = param_4 - 1; } dVar10 = (double)iVar3 * _DAT_1800101e8; iVar3 = 0x77; if ((int)(param_4 + 1) < 0x77) { iVar3 = param_4 + 1; } iVar3 = MAG_EstimateUnderArmTempFromForeheadRect (*(undefined4 *)(param_1 + 0x18),iVar4,iVar6,iVar7,iVar3); iVar4 = *(int *)(param_1 + 0x27c); dVar9 = (double)iVar3 * _DAT_1800101e8; if (iVar4 == 1) { dVar10 = dVar10 * _DAT_1800101f0 + _DAT_1800101f8; dVar9 = dVar9 * _DAT_1800101f0 + _DAT_1800101f8; } dVar1 = *(double *)(param_1 + 0x298); dVar9 = dVar9 + dVar1; if ((*(double *)(param_1 + 0x290) <= dVar9 && dVar9 != *(double *)(param_1 + 0x290)) || (dVar9 < *(double *)(param_1 + 0x288))) { uVar5 = 0xffffffff; } else { uVar5 = (uint)(*(double *)(param_1 + 0x280) <= dVar9); } *(uint *)((longlong)param_2 + 0x24) = uVar5; *(int *)(param_2 + 4) = iVar4; fVar8 = (float)(int)param_4 / _DAT_180010200; *param_2 = (double)((float)(int)param_3 / _DAT_180010204); param_2[2] = dVar10 + dVar1; param_2[1] = (double)fVar8; param_2[3] = dVar9; } else { *(undefined4 *)((longlong)param_2 + 0x24) = 0xfa0a1f00; *param_2 = -1.0; param_2[1] = -1.0; param_2[3] = -100000000.0; param_2[2] = -100000000.0; *(undefined4 *)(param_2 + 4) = *(undefined4 *)(param_1 + 0x27c); } return param_2; } ================================================================== ### EXPORT FUNC 18000bb30 (6 bytes) name=GetSDKVersion undefined8 GetSDKVersion(void) { /* 0xbb30 2 GetSDKVersion */ return 10000; } ================================================================== ### EXPORT FUNC 18000bb40 (21 bytes) name=Start void Start(undefined8 param_1,undefined4 *param_2,undefined *param_3,undefined8 param_4) { undefined8 *puVar1; /* 0xbb40 16 Start */ puVar1 = FUN_18000b530(); FUN_18000b6f0((longlong)puVar1,param_2,param_3,param_4); return; } ================================================================== ### EXPORT FUNC 18000bb60 (152 bytes) name=Stop void Stop(void) { int iVar1; undefined8 *puVar2; /* 0xbb60 18 Stop */ puVar2 = FUN_18000b530(); iVar1 = MAG_IsProcessingImage(*(undefined4 *)(puVar2 + 3)); if (iVar1 != 0) { if (*(int *)(puVar2 + 0x3e) != 0) { MAG_LocalStorageAviStop(*(undefined4 *)(puVar2 + 3)); *(undefined4 *)(puVar2 + 0x3e) = 0; } if (*(int *)((longlong)puVar2 + 500) != 0) { MAG_LocalStorageMgsStop(*(undefined4 *)(puVar2 + 3)); *(undefined8 *)((longlong)puVar2 + 500) = 0; } MAG_StopProcessImage(*(undefined4 *)(puVar2 + 3)); } iVar1 = MAG_IsLinked(*(undefined4 *)(puVar2 + 3)); if (iVar1 != 0) { MAG_DisLinkCamera(*(undefined4 *)(puVar2 + 3)); } *(undefined1 *)(puVar2 + 0x55) = 0; (**(code **)(*(longlong *)(puVar2[0x46] + 8) + 0x20))(); *(undefined1 *)((longlong)puVar2 + 0x2a9) = 0; return; } ================================================================== ### EXPORT FUNC 18000bc00 (41 bytes) name=IsWorking undefined8 IsWorking(void) { undefined8 *puVar1; uint7 uVar2; /* 0xbc00 4 IsWorking */ puVar1 = FUN_18000b530(); uVar2 = (uint7)((ulonglong)puVar1 >> 8); if ((*(char *)(puVar1 + 0x55) != '\0') && (*(char *)((longlong)puVar1 + 0x2a9) != '\0')) { return CONCAT71(uVar2,1); } return (ulonglong)uVar2 << 8; } ================================================================== ### EXPORT FUNC 18000bc30 (27 bytes) name=SetNewIRFrameDelegate void SetNewIRFrameDelegate(undefined8 param_1) { undefined8 *puVar1; /* 0xbc30 11 SetNewIRFrameDelegate */ puVar1 = FUN_18000b530(); puVar1[0x45] = param_1; return; } ================================================================== ### EXPORT FUNC 18000bc50 (27 bytes) name=SetNewDistanceDelegate void SetNewDistanceDelegate(undefined8 param_1) { undefined8 *puVar1; /* 0xbc50 10 SetNewDistanceDelegate */ puVar1 = FUN_18000b530(); puVar1[0x47] = param_1; return; } ================================================================== ### EXPORT FUNC 18000bc70 (122 bytes) name=ReadTemperatureAtPoint void ReadTemperatureAtPoint(uint param_1,uint param_2,double *param_3) { undefined8 *puVar1; double local_38; double dStack_30; double local_28; double dStack_20; double local_18; /* 0xbc70 5 ReadTemperatureAtPoint */ puVar1 = FUN_18000b530(); MAG_LockFrame(*(undefined4 *)(puVar1 + 3)); FUN_18000b960((longlong)puVar1,&local_38,param_1,param_2); MAG_UnLockFrame(*(undefined4 *)(puVar1 + 3)); *param_3 = local_38; param_3[1] = dStack_30; param_3[2] = local_28; param_3[3] = dStack_20; param_3[4] = local_18; return; } ================================================================== ### EXPORT FUNC 18000bcf0 (361 bytes) name=ReadTemperatureInRect /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void ReadTemperatureInRect(int param_1,int param_2,int param_3,int param_4,undefined4 *param_5) { int iVar1; char cVar2; undefined8 *puVar3; uint uVar4; undefined1 auStack_c8 [32]; int local_a8; undefined8 *local_a0; undefined4 local_98; undefined4 uStack_94; undefined4 uStack_90; undefined4 uStack_8c; undefined4 local_88; undefined4 uStack_84; undefined4 uStack_80; undefined4 uStack_7c; undefined4 local_78; undefined4 uStack_74; undefined8 local_70; undefined8 uStack_68; int local_60; ulonglong local_58; /* 0xbcf0 6 ReadTemperatureInRect */ local_58 = DAT_180015010 ^ (ulonglong)auStack_c8; puVar3 = FUN_18000b530(); MAG_LockFrame(*(undefined4 *)(puVar3 + 3)); local_60 = 0; local_a8 = 0; if (-1 < param_2) { local_a8 = param_2; } local_70 = 0; uStack_68 = 0; iVar1 = local_a8 + param_4; if (0x77 < local_a8 + param_4) { iVar1 = 0x77; } local_a8 = 0x77 - local_a8; local_a0 = &local_70; cVar2 = MAG_GetRectTemperatureInfo (*(undefined4 *)(puVar3 + 3),param_1,0x77 - iVar1,param_3 + param_1); if (cVar2 == '\0') { local_78 = *(undefined4 *)((longlong)puVar3 + 0x27c); local_88 = _DAT_180010220; uStack_84 = _UNK_180010224; uStack_80 = _UNK_180010228; uStack_7c = _UNK_18001022c; uStack_74 = 0xfa0a1f00; local_98 = _DAT_180010210; uStack_94 = _UNK_180010214; uStack_90 = _UNK_180010218; uStack_8c = _UNK_18001021c; } else { iVar1 = local_60 / 0xa0; uVar4 = local_60 % 0xa0; local_a8 = iVar1; MAG_FixTemperature(*(undefined4 *)(puVar3 + 3),local_70._4_4_, *(undefined4 *)((longlong)puVar3 + 0x254),uVar4); FUN_18000b960((longlong)puVar3,(double *)&local_98,uVar4,0x78 - iVar1); } MAG_UnLockFrame(*(undefined4 *)(puVar3 + 3)); *param_5 = local_98; param_5[1] = uStack_94; param_5[2] = uStack_90; param_5[3] = uStack_8c; *(ulonglong *)(param_5 + 4) = CONCAT44(uStack_84,local_88); *(ulonglong *)(param_5 + 6) = CONCAT44(uStack_7c,uStack_80); *(ulonglong *)(param_5 + 8) = CONCAT44(uStack_74,local_78); return; } ================================================================== ### EXPORT FUNC 18000be60 (81 bytes) name=SetTempBoundary void SetTempBoundary(undefined8 param_1,undefined8 param_2,undefined8 param_3) { undefined8 *puVar1; /* 0xbe60 12 SetTempBoundary */ puVar1 = FUN_18000b530(); puVar1[0x51] = param_1; puVar1[0x52] = param_2; puVar1[0x50] = param_3; return; } ================================================================== ### EXPORT FUNC 18000bec0 (35 bytes) name=SetTempOffset void SetTempOffset(undefined8 param_1) { undefined8 *puVar1; /* 0xbec0 13 SetTempOffset */ puVar1 = FUN_18000b530(); puVar1[0x53] = param_1; return; } ================================================================== ### EXPORT FUNC 18000bef0 (25 bytes) name=SetUnitMode void SetUnitMode(undefined4 param_1) { undefined8 *puVar1; /* 0xbef0 14 SetUnitMode */ puVar1 = FUN_18000b530(); *(undefined4 *)((longlong)puVar1 + 0x27c) = param_1; return; } ================================================================== ### EXPORT FUNC 18000bf10 (124 bytes) name=Rotate void Rotate(int param_1) { undefined8 *puVar1; longlong lVar2; undefined8 *puVar3; /* 0xbf10 7 Rotate */ puVar1 = FUN_18000b530(); puVar3 = *(undefined8 **)(puVar1[0x46] + 0x60); puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); while( true ) { if (puVar3 == puVar1) { return; } lVar2 = __RTDynamicCast(*puVar3,0,&TCMVirtualDevice::RTTI_Type_Descriptor, &EloMotorDevice::RTTI_Type_Descriptor,0); if (lVar2 != 0) break; puVar3 = puVar3 + 1; } FUN_180007a40(lVar2,param_1); return; } ================================================================== ### EXPORT FUNC 18000bf90 (59 bytes) name=GetInnerIRCameraTemp /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ double GetInnerIRCameraTemp(void) { undefined8 *puVar1; double dVar2; /* 0xbf90 1 GetInnerIRCameraTemp */ puVar1 = FUN_18000b530(); dVar2 = (double)*(int *)(puVar1 + 0x48) * _DAT_1800101e8; if (*(int *)((longlong)puVar1 + 0x27c) == 1) { dVar2 = dVar2 * _DAT_1800101f0 + _DAT_1800101f8; } return dVar2; } ================================================================== ### EXPORT FUNC 18000bfd0 (88 bytes) name=SetEmissivity void SetEmissivity(double param_1) { undefined8 *puVar1; /* 0xbfd0 8 SetEmissivity */ puVar1 = FUN_18000b530(); if (*(int *)(puVar1 + 1) == 0) { puVar1[0x49] = param_1; return; } *(float *)((longlong)puVar1 + 0x254) = (float)param_1; /* WARNING: Could not recover jumptable at 0x00018000c021. Too many branches */ /* WARNING: Treating indirect jump as call */ MAG_SetFixPara(*(undefined4 *)(puVar1 + 3),puVar1 + 0x4a,2); return; } ================================================================== ### EXPORT FUNC 18000c030 (47 bytes) name=Trigger void Trigger(void) { DWORD DVar1; undefined8 *puVar2; /* 0xc030 19 Trigger */ puVar2 = FUN_18000b530(); if (*(int *)(puVar2 + 1) != 0) { MAG_TriggerFFC(*(undefined4 *)(puVar2 + 3)); } DVar1 = GetTickCount(); *(DWORD *)((longlong)puVar2 + 0x244) = DVar1; return; } ================================================================== ### EXPORT FUNC 18000c060 (255 bytes) name=GetTCMVersion /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Type propagation algorithm not settling */ void GetTCMVersion(void *param_1) { undefined8 *puVar1; longlong lVar2; undefined8 *******pppppppuVar3; undefined8 *puVar4; TypeDescriptor *pTVar5; TypeDescriptor *pTVar6; undefined1 auStack_68 [32]; undefined4 local_48; undefined8 *******local_38 [2]; int local_28; ulonglong local_20; ulonglong local_18; /* 0xc060 3 GetTCMVersion */ local_18 = DAT_180015010 ^ (ulonglong)auStack_68; puVar1 = FUN_18000b530(); puVar4 = *(undefined8 **)(puVar1[0x46] + 0x60); puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); while( true ) { if (puVar4 == puVar1) { return; } pTVar6 = &EloTCMUpdaterDevice::RTTI_Type_Descriptor; pTVar5 = &TCMVirtualDevice::RTTI_Type_Descriptor; local_48 = 0; lVar2 = __RTDynamicCast(*puVar4,0); if (lVar2 != 0) break; puVar4 = puVar4 + 1; } FUN_180009000(lVar2,local_38,pTVar5,(longlong)pTVar6); pppppppuVar3 = local_38; if (0xf < local_20) { pppppppuVar3 = local_38[0]; } memcpy(param_1,pppppppuVar3,(longlong)local_28); if (local_20 < 0x10) { return; } pppppppuVar3 = local_38[0]; if ((0xfff < local_20 + 1) && (pppppppuVar3 = (undefined8 *******)local_38[0][-1], 0x1f < (ulonglong)((longlong)local_38[0] + (-8 - (longlong)pppppppuVar3)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pppppppuVar3); return; } ================================================================== ### EXPORT FUNC 18000c160 (405 bytes) name=SetFirmwareData /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void SetFirmwareData(void *param_1,int param_2) { void *_Src; longlong lVar1; undefined8 *puVar2; longlong lVar3; undefined8 *puVar4; void *pvVar5; ulonglong _Size; void **ppvVar6; undefined1 auStack_78 [32]; undefined4 local_58; void *local_48; undefined8 uStack_40; longlong local_38; ulonglong local_30; /* 0xc160 9 SetFirmwareData */ local_30 = DAT_180015010 ^ (ulonglong)auStack_78; _Size = (ulonglong)param_2; puVar2 = FUN_18000b530(); puVar4 = *(undefined8 **)(puVar2[0x46] + 0x60); puVar2 = *(undefined8 **)(puVar2[0x46] + 0x68); while( true ) { if (puVar4 == puVar2) { return; } local_58 = 0; lVar3 = __RTDynamicCast(*puVar4,0,&TCMVirtualDevice::RTTI_Type_Descriptor, &EloTCMUpdaterDevice::RTTI_Type_Descriptor); if (lVar3 != 0) break; puVar4 = puVar4 + 1; } local_38 = 0; local_48 = (void *)0x0; uStack_40 = 0; if (param_2 != 0) { if (0x7fffffffffffffff < _Size) { /* WARNING: Subroutine does not return */ FUN_180002b80(); } FUN_18000c470((longlong *)&local_48,_Size); } if ((ulonglong)(local_38 - (longlong)local_48) < _Size) { FUN_180002ba0((ulonglong *)&local_48,_Size); } lVar1 = local_38; _Src = local_48; memmove(local_48,param_1,_Size); ppvVar6 = (void **)(lVar3 + 0x100); if (ppvVar6 != &local_48) { pvVar5 = *ppvVar6; if ((ulonglong)(*(longlong *)(lVar3 + 0x110) - (longlong)pvVar5) < _Size) { FUN_180002ba0((ulonglong *)ppvVar6,_Size); pvVar5 = *ppvVar6; } memmove(pvVar5,_Src,_Size); *(ulonglong *)(lVar3 + 0x108) = (longlong)pvVar5 + _Size; } if (_Src == (void *)0x0) { return; } pvVar5 = _Src; if ((0xfff < (ulonglong)(lVar1 - (longlong)_Src)) && (pvVar5 = *(void **)((longlong)_Src + -8), 0x1f < (ulonglong)((longlong)_Src + (-8 - (longlong)pvVar5)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(pvVar5); return; } ================================================================== ### EXPORT FUNC 18000c300 (122 bytes) name=SetUpdateCallback void SetUpdateCallback(undefined8 param_1) { undefined8 *puVar1; longlong lVar2; undefined8 *puVar3; /* 0xc300 15 SetUpdateCallback */ puVar1 = FUN_18000b530(); puVar3 = *(undefined8 **)(puVar1[0x46] + 0x60); puVar1 = *(undefined8 **)(puVar1[0x46] + 0x68); while( true ) { if (puVar3 == puVar1) { return; } lVar2 = __RTDynamicCast(*puVar3,0,&TCMVirtualDevice::RTTI_Type_Descriptor, &EloTCMUpdaterDevice::RTTI_Type_Descriptor,0); if (lVar2 != 0) break; puVar3 = puVar3 + 1; } *(undefined8 *)(lVar2 + 0xd8) = param_1; return; } ================================================================== ### EXPORT FUNC 18000c380 (227 bytes) name=StartUpdate void StartUpdate(void) { code *pcVar1; undefined8 *puVar2; longlong lVar3; longlong *_ArgList; uintptr_t uVar4; undefined8 *puVar5; uint uStack_10; undefined4 uStack_c; /* 0xc380 17 StartUpdate */ puVar2 = FUN_18000b530(); puVar5 = *(undefined8 **)(puVar2[0x46] + 0x60); puVar2 = *(undefined8 **)(puVar2[0x46] + 0x68); while( true ) { if (puVar5 == puVar2) { return; } lVar3 = __RTDynamicCast(*puVar5,0,&TCMVirtualDevice::RTTI_Type_Descriptor, &EloTCMUpdaterDevice::RTTI_Type_Descriptor,0); if (lVar3 != 0) break; puVar5 = puVar5 + 1; } _ArgList = (longlong *)FUN_18000c554(0x10); _ArgList[1] = (longlong)FUN_1800091e0; *_ArgList = lVar3; uVar4 = _beginthreadex((void *)0x0,0,FUN_180007930,_ArgList,0,&uStack_10); if (uVar4 != 0) { if (*(int *)(lVar3 + 0x120) == 0) { *(uintptr_t *)(lVar3 + 0x118) = uVar4; *(ulonglong *)(lVar3 + 0x120) = CONCAT44(uStack_c,uStack_10); return; } /* WARNING: Subroutine does not return */ terminate(); } uStack_10 = 0; std::_Throw_Cpp_error(6); pcVar1 = (code *)swi(3); (*pcVar1)(); return; } ================================================================== ### EXPORT FUNC 18000c470 (161 bytes) name=FUN_18000c470 void FUN_18000c470(longlong *param_1,ulonglong param_2) { longlong lVar1; longlong lVar2; longlong lVar3; void *_Dst; lVar1 = param_1[1]; lVar2 = *param_1; if (param_2 < 0x1000) { if (param_2 == 0) { _Dst = (void *)0x0; } else { _Dst = (void *)FUN_18000c554(param_2); } } else { if (param_2 + 0x27 <= param_2) { /* WARNING: Subroutine does not return */ FUN_180001750(); } lVar3 = FUN_18000c554(param_2 + 0x27); if (lVar3 == 0) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } _Dst = (void *)(lVar3 + 0x27U & 0xffffffffffffffe0); *(longlong *)((longlong)_Dst - 8) = lVar3; } memmove(_Dst,(void *)*param_1,param_1[1] - *param_1); FUN_180007280(param_1,(longlong)_Dst,lVar1 - lVar2,param_2); return; } ================================================================== ### EXPORT FUNC 18000c530 (33 bytes) name=__security_check_cookie /* WARNING: This is an inlined function */ /* Library Function - Single Match __security_check_cookie Libraries: Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */ void __cdecl __security_check_cookie(uintptr_t _StackCookie) { if ((_StackCookie == DAT_180015010) && ((short)(_StackCookie >> 0x30) == 0)) { return; } /* WARNING: Subroutine does not return */ __report_gsfailure(_StackCookie); } ================================================================== ### EXPORT FUNC 18000c554 (58 bytes) name=FUN_18000c554 void FUN_18000c554(size_t param_1) { int iVar1; void *pvVar2; do { pvVar2 = malloc(param_1); if (pvVar2 != (void *)0x0) { return; } iVar1 = _callnewh(param_1); } while (iVar1 != 0); if (param_1 == 0xffffffffffffffff) { /* WARNING: Subroutine does not return */ FUN_180001750(); } /* WARNING: Subroutine does not return */ FUN_18000d200(); } ================================================================== ### EXPORT FUNC 18000c590 (57 bytes) name=__scrt_acquire_startup_lock /* Library Function - Single Match __scrt_acquire_startup_lock Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ ulonglong __scrt_acquire_startup_lock(void) { ulonglong uVar1; bool bVar2; undefined7 extraout_var; ulonglong uVar3; bVar2 = __scrt_is_ucrt_dll_in_use(); uVar3 = CONCAT71(extraout_var,bVar2); if ((int)uVar3 == 0) { LAB_18000c5be: uVar3 = uVar3 & 0xffffffffffffff00; } else { do { uVar3 = 0; LOCK(); bVar2 = DAT_1800159a8 == 0; uVar1 = *(ulonglong *)((longlong)Self + 8); if (!bVar2) { uVar3 = DAT_1800159a8; uVar1 = DAT_1800159a8; } DAT_1800159a8 = uVar1; UNLOCK(); if (bVar2) goto LAB_18000c5be; } while (*(ulonglong *)((longlong)Self + 8) != uVar3); uVar3 = CONCAT71((int7)(uVar3 >> 8),1); } return uVar3; } ================================================================== ### EXPORT FUNC 18000c5cc (52 bytes) name=__scrt_dllmain_after_initialize_c /* Library Function - Single Match __scrt_dllmain_after_initialize_c Library: Visual Studio 2019 Release */ undefined8 __scrt_dllmain_after_initialize_c(void) { bool bVar1; undefined7 extraout_var; undefined8 uVar2; ulonglong uVar3; bVar1 = __scrt_is_ucrt_dll_in_use(); if ((int)CONCAT71(extraout_var,bVar1) == 0) { uVar3 = FUN_180001540(); uVar3 = _configure_narrow_argv(uVar3 & 0xffffffff); if ((int)uVar3 != 0) { return uVar3 & 0xffffffffffffff00; } uVar2 = _initialize_narrow_environment(); } else { uVar2 = __isa_available_init(); } return CONCAT71((int7)((ulonglong)uVar2 >> 8),1); } ================================================================== ### EXPORT FUNC 18000c600 (21 bytes) name=FUN_18000c600 bool FUN_18000c600(void) { undefined8 uVar1; uVar1 = FUN_18000c748(0); return (char)uVar1 != '\0'; } ================================================================== ### EXPORT FUNC 18000c618 (40 bytes) name=FUN_18000c618 undefined1 FUN_18000c618(void) { char cVar1; cVar1 = FUN_18000d750(); if (cVar1 != '\0') { cVar1 = FUN_18000d750(); if (cVar1 != '\0') { return 1; } FUN_18000d750(); } return 0; } ================================================================== ### EXPORT FUNC 18000c640 (21 bytes) name=FUN_18000c640 undefined1 FUN_18000c640(void) { FUN_18000d750(); FUN_18000d750(); return 1; } ================================================================== ### EXPORT FUNC 18000c658 (96 bytes) name=__scrt_dllmain_exception_filter /* Library Function - Single Match __scrt_dllmain_exception_filter Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ void __scrt_dllmain_exception_filter (undefined8 param_1,int param_2,undefined8 param_3,undefined *param_4, undefined4 param_5,undefined8 param_6) { bool bVar1; undefined7 extraout_var; bVar1 = __scrt_is_ucrt_dll_in_use(); if (((int)CONCAT71(extraout_var,bVar1) == 0) && (param_2 == 1)) { (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,0,param_3); } _seh_filter_dll(param_5,param_6); return; } ================================================================== ### EXPORT FUNC 18000c6b8 (48 bytes) name=__scrt_dllmain_uninitialize_c /* Library Function - Single Match __scrt_dllmain_uninitialize_c Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void __scrt_dllmain_uninitialize_c(void) { bool bVar1; undefined7 extraout_var; undefined8 uVar2; bVar1 = __scrt_is_ucrt_dll_in_use(); if ((int)CONCAT71(extraout_var,bVar1) != 0) { _execute_onexit_table(&DAT_1800159b8); return; } uVar2 = FUN_18000d754(); if ((int)uVar2 == 0) { _cexit(); } return; } ================================================================== ### EXPORT FUNC 18000c6e8 (20 bytes) name=FUN_18000c6e8 void FUN_18000c6e8(void) { FUN_18000d750(); FUN_18000d750(); return; } ================================================================== ### EXPORT FUNC 18000c6fc (73 bytes) name=__scrt_initialize_crt /* Library Function - Single Match __scrt_initialize_crt Library: Visual Studio 2019 Release */ longlong __scrt_initialize_crt(int param_1) { char cVar1; uint7 extraout_var; uint7 uVar2; undefined7 extraout_var_00; uint7 extraout_var_01; if (param_1 == 0) { DAT_1800159b0 = 1; } __isa_available_init(); cVar1 = FUN_18000d750(); uVar2 = extraout_var; if (cVar1 != '\0') { cVar1 = FUN_18000d750(); if (cVar1 != '\0') { return CONCAT71(extraout_var_00,1); } FUN_18000d750(); uVar2 = extraout_var_01; } return (ulonglong)uVar2 << 8; } ================================================================== ### EXPORT FUNC 18000c748 (138 bytes) name=FUN_18000c748 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ undefined8 FUN_18000c748(uint param_1) { bool bVar1; ulonglong in_RAX; undefined7 extraout_var; if (DAT_1800159b1 == '\0') { if (1 < param_1) { /* WARNING: Subroutine does not return */ __scrt_fastfail(5); } bVar1 = __scrt_is_ucrt_dll_in_use(); if (((int)CONCAT71(extraout_var,bVar1) == 0) || (param_1 != 0)) { in_RAX = 0xffffffffffffffff; DAT_1800159b8 = _DAT_18000f5f0; uRam00000001800159c0 = _UNK_18000f5f8; _DAT_1800159c8 = 0xffffffffffffffff; _DAT_1800159d0 = _DAT_18000f5f0; uRam00000001800159d8 = _UNK_18000f5f8; _DAT_1800159e0 = 0xffffffffffffffff; } else { in_RAX = _initialize_onexit_table(&DAT_1800159b8); if (((int)in_RAX != 0) || (in_RAX = _initialize_onexit_table(&DAT_1800159d0), (int)in_RAX != 0)) { return in_RAX & 0xffffffffffffff00; } } DAT_1800159b1 = '\x01'; } return CONCAT71((int7)(in_RAX >> 8),1); } ================================================================== ### EXPORT FUNC 18000c7d4 (150 bytes) name=__scrt_is_nonwritable_in_current_image /* Library Function - Single Match __scrt_is_nonwritable_in_current_image Library: Visual Studio 2019 Release */ ulonglong __scrt_is_nonwritable_in_current_image(longlong param_1) { ulonglong uVar1; uint7 uVar2; longlong lVar3; longlong lVar4; uVar1 = 0x5a4d; if (((IMAGE_DOS_HEADER_180000000.e_magic == (char [2])0x5a4d) && (lVar3 = (longlong)(int)IMAGE_DOS_HEADER_180000000.e_lfanew, *(int *)(lVar3 + 0x180000000) == 0x4550)) && (uVar1 = 0x20b, *(short *)((longlong)IMAGE_DOS_HEADER_180000000.e_res_4_ + lVar3 + -4) == 0x20b )) { lVar4 = lVar3 + 0x180000018 + (ulonglong)*(ushort *)((longlong)IMAGE_DOS_HEADER_180000000.e_res_4_ + lVar3 + -8); uVar1 = (ulonglong)*(ushort *)(IMAGE_DOS_HEADER_180000000.e_magic + lVar3 + 6); lVar3 = lVar4 + uVar1 * 0x28; for (; lVar4 != lVar3; lVar4 = lVar4 + 0x28) { if (((ulonglong)*(uint *)(lVar4 + 0xc) <= param_1 - 0x180000000U) && (uVar1 = (ulonglong)(*(int *)(lVar4 + 8) + *(uint *)(lVar4 + 0xc)), param_1 - 0x180000000U < uVar1)) goto LAB_18000c84a; } lVar4 = 0; LAB_18000c84a: if (lVar4 == 0) { uVar1 = uVar1 & 0xffffffffffffff00; } else { uVar2 = (uint7)(uVar1 >> 8); if (*(int *)(lVar4 + 0x24) < 0) { uVar1 = (ulonglong)uVar2 << 8; } else { uVar1 = CONCAT71(uVar2,1); } } } else { uVar1 = uVar1 & 0xffffffffffffff00; } return uVar1; } ================================================================== ### EXPORT FUNC 18000c86c (36 bytes) name=__scrt_release_startup_lock /* Library Function - Single Match __scrt_release_startup_lock Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void __scrt_release_startup_lock(char param_1) { bool bVar1; undefined3 extraout_var; bVar1 = __scrt_is_ucrt_dll_in_use(); if ((CONCAT31(extraout_var,bVar1) != 0) && (param_1 == '\0')) { LOCK(); DAT_1800159a8 = 0; UNLOCK(); } return; } ================================================================== ### EXPORT FUNC 18000c890 (41 bytes) name=__scrt_uninitialize_crt /* Library Function - Single Match __scrt_uninitialize_crt Library: Visual Studio 2019 Release */ undefined1 __scrt_uninitialize_crt(undefined8 param_1,char param_2) { if ((DAT_1800159b0 == '\0') || (param_2 == '\0')) { FUN_18000d750(); FUN_18000d750(); } return 1; } ================================================================== ### EXPORT FUNC 18000c8bc (58 bytes) name=_onexit /* Library Function - Single Match _onexit Library: Visual Studio 2019 Release */ _onexit_t __cdecl _onexit(_onexit_t _Func) { int iVar1; _onexit_t p_Var2; if (DAT_1800159b8 == -1) { iVar1 = _crt_atexit(); } else { iVar1 = _register_onexit_function(&DAT_1800159b8); } p_Var2 = (_onexit_t)0x0; if (iVar1 == 0) { p_Var2 = _Func; } return p_Var2; } ================================================================== ### EXPORT FUNC 18000c8f8 (23 bytes) name=atexit /* Library Function - Single Match atexit Library: Visual Studio 2019 Release */ int __cdecl atexit(_func_5014 *param_1) { _onexit_t p_Var1; p_Var1 = _onexit((_onexit_t)param_1); return (p_Var1 != (_onexit_t)0x0) - 1; } ================================================================== ### EXPORT FUNC 18000c910 (5 bytes) name=free void __cdecl free(void *_Memory) { /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ /* WARNING: Treating indirect jump as call */ free(_Memory); return; } ================================================================== ### EXPORT FUNC 18000c918 (43 bytes) name=FUN_18000c918 undefined8 * FUN_18000c918(undefined8 *param_1,ulonglong param_2) { *param_1 = type_info::vftable; if ((param_2 & 1) != 0) { free(param_1); } return param_1; } ================================================================== ### EXPORT FUNC 18000c944 (52 bytes) name=__raise_securityfailure /* Library Function - Single Match __raise_securityfailure Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void __raise_securityfailure(_EXCEPTION_POINTERS *param_1) { HANDLE pvVar1; SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); UnhandledExceptionFilter(param_1); pvVar1 = GetCurrentProcess(); /* WARNING: Could not recover jumptable at 0x00018000c971. Too many branches */ /* WARNING: Treating indirect jump as call */ TerminateProcess(pvVar1,0xc0000409); return; } ================================================================== ### EXPORT FUNC 18000c978 (209 bytes) name=__report_gsfailure /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ /* Library Function - Single Match __report_gsfailure Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void __cdecl __report_gsfailure(uintptr_t _StackCookie) { code *pcVar1; BOOL BVar2; undefined1 *puVar3; undefined1 auStack_38 [8]; undefined1 auStack_30 [48]; puVar3 = auStack_38; BVar2 = IsProcessorFeaturePresent(0x17); if (BVar2 != 0) { pcVar1 = (code *)swi(0x29); (*pcVar1)(2); puVar3 = auStack_30; } *(undefined8 *)(puVar3 + -8) = 0x18000c9a2; capture_previous_context((PCONTEXT)&DAT_180015a90); _DAT_180015a00 = *(undefined8 *)(puVar3 + 0x38); _DAT_180015b28 = puVar3 + 0x40; _DAT_180015b10 = *(undefined8 *)(puVar3 + 0x40); _DAT_1800159f0 = 0xc0000409; _DAT_1800159f4 = 1; _DAT_180015a08 = 1; DAT_180015a10 = 2; *(undefined8 *)(puVar3 + 0x20) = DAT_180015010; *(undefined8 *)(puVar3 + 0x28) = DAT_180015008; *(undefined8 *)(puVar3 + -8) = 0x18000ca44; DAT_180015b88 = _DAT_180015a00; __raise_securityfailure((_EXCEPTION_POINTERS *)&PTR_DAT_18000f610); return; } ================================================================== ### EXPORT FUNC 18000ca4c (19 bytes) name=__report_rangecheckfailure /* Library Function - Single Match __report_rangecheckfailure Libraries: Visual Studio 2012, Visual Studio 2015, Visual Studio 2017, Visual Studio 2019 */ void __report_rangecheckfailure(void) { __report_securityfailure(8); return; } ================================================================== ### EXPORT FUNC 18000ca60 (155 bytes) name=__report_securityfailure /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ /* Library Function - Single Match __report_securityfailure Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void __report_securityfailure(undefined4 param_1) { code *pcVar1; BOOL BVar2; undefined1 *puVar3; undefined1 auStack_28 [8]; undefined1 auStack_20 [32]; puVar3 = auStack_28; BVar2 = IsProcessorFeaturePresent(0x17); if (BVar2 != 0) { pcVar1 = (code *)swi(0x29); (*pcVar1)(param_1); puVar3 = auStack_20; } *(undefined8 *)(puVar3 + -8) = 0x18000ca8a; capture_current_context((PCONTEXT)&DAT_180015a90); _DAT_180015a00 = *(undefined8 *)(puVar3 + 0x28); _DAT_180015b28 = puVar3 + 0x30; _DAT_1800159f0 = 0xc0000409; _DAT_1800159f4 = 1; _DAT_180015a08 = 1; DAT_180015a10 = (ulonglong)*(uint *)(puVar3 + 0x30); *(undefined8 *)(puVar3 + -8) = 0x18000caf6; DAT_180015b88 = _DAT_180015a00; __raise_securityfailure((_EXCEPTION_POINTERS *)&PTR_DAT_18000f610); return; } ================================================================== ### EXPORT FUNC 18000cafc (109 bytes) name=capture_current_context /* Library Function - Single Match capture_current_context Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void capture_current_context(PCONTEXT param_1) { DWORD64 ControlPc; PRUNTIME_FUNCTION FunctionEntry; DWORD64 local_res8; ulonglong local_res10; PVOID local_res18; RtlCaptureContext(); ControlPc = param_1->Rip; FunctionEntry = RtlLookupFunctionEntry(ControlPc,&local_res8,(PUNWIND_HISTORY_TABLE)0x0); if (FunctionEntry != (PRUNTIME_FUNCTION)0x0) { RtlVirtualUnwind(0,local_res8,ControlPc,FunctionEntry,param_1,&local_res18,&local_res10, (PKNONVOLATILE_CONTEXT_POINTERS)0x0); } return; } ================================================================== ### EXPORT FUNC 18000cb6c (113 bytes) name=capture_previous_context /* Library Function - Single Match capture_previous_context Libraries: Visual Studio 2015 Release, Visual Studio 2017 Release, Visual Studio 2019 Release */ void capture_previous_context(PCONTEXT param_1) { DWORD64 ControlPc; PRUNTIME_FUNCTION FunctionEntry; int iVar1; DWORD64 local_res8; ulonglong local_res10; PVOID local_res18 [2]; RtlCaptureContext(); ControlPc = param_1->Rip; iVar1 = 0; do { FunctionEntry = RtlLookupFunctionEntry(ControlPc,&local_res8,(PUNWIND_HISTORY_TABLE)0x0); if (FunctionEntry == (PRUNTIME_FUNCTION)0x0) { return; } RtlVirtualUnwind(0,local_res8,ControlPc,FunctionEntry,param_1,local_res18,&local_res10, (PKNONVOLATILE_CONTEXT_POINTERS)0x0); iVar1 = iVar1 + 1; } while (iVar1 < 2); return; } ================================================================== ### EXPORT FUNC 18000cbe0 (207 bytes) name=FUN_18000cbe0 undefined8 FUN_18000cbe0(void) { HMODULE hModule; FARPROC pFVar1; FARPROC pFVar2; undefined8 uVar3; InitializeCriticalSectionAndSpinCount((LPCRITICAL_SECTION)&DAT_180015f70,4000); hModule = GetModuleHandleW(L"api-ms-win-core-synch-l1-2-0.dll"); if ((hModule != (HMODULE)0x0) || (hModule = GetModuleHandleW(L"kernel32.dll"), hModule != (HMODULE)0x0)) { pFVar1 = GetProcAddress(hModule,"SleepConditionVariableCS"); pFVar2 = GetProcAddress(hModule,"WakeAllConditionVariable"); if ((((pFVar1 != (FARPROC)0x0) && (pFVar2 != (FARPROC)0x0)) || (DAT_180015f68 = CreateEventW((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCWSTR)0x0), pFVar1 = DAT_180015f98, pFVar2 = DAT_180015fa0, DAT_180015f68 != (HANDLE)0x0)) && (DAT_180015fa0 = pFVar2, DAT_180015f98 = pFVar1, uVar3 = FUN_18000c748(0), (char)uVar3 != '\0')) { atexit(FUN_18000ccb0); return 0; } } /* WARNING: Subroutine does not return */ __scrt_fastfail(7); } ================================================================== ### EXPORT FUNC 18000ccb0 (40 bytes) name=FUN_18000ccb0 void FUN_18000ccb0(void) { DeleteCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); if (DAT_180015f68 != (HANDLE)0x0) { CloseHandle(DAT_180015f68); } return; } ================================================================== ### EXPORT FUNC 18000ccd8 (48 bytes) name=_Init_thread_abort /* Library Function - Single Match _Init_thread_abort Library: Visual Studio 2019 Release */ void _Init_thread_abort(undefined4 *param_1) { EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); *param_1 = 0; LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); _Init_thread_notify(); return; } ================================================================== ### EXPORT FUNC 18000cd08 (96 bytes) name=_Init_thread_footer /* Library Function - Single Match _Init_thread_footer Library: Visual Studio 2019 Release */ void _Init_thread_footer(int *param_1) { ulonglong uVar1; EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); uVar1 = (ulonglong)_tls_index; DAT_180015004 = DAT_180015004 + 1; *param_1 = DAT_180015004; *(int *)(*(longlong *)((longlong)ThreadLocalStoragePointer + uVar1 * 8) + 4) = DAT_180015004; LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); _Init_thread_notify(); return; } ================================================================== ### EXPORT FUNC 18000cd68 (103 bytes) name=_Init_thread_header /* Library Function - Single Match _Init_thread_header Library: Visual Studio 2019 Release */ void _Init_thread_header(int *param_1) { EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); do { if (*param_1 == 0) { *param_1 = -1; LAB_18000cdbc: /* WARNING: Could not recover jumptable at 0x00018000cdc8. Too many branches */ /* WARNING: Treating indirect jump as call */ LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); return; } if (*param_1 != -1) { *(undefined4 *) (*(longlong *)((longlong)ThreadLocalStoragePointer + (ulonglong)_tls_index * 8) + 4) = DAT_180015004; goto LAB_18000cdbc; } _Init_thread_wait(100); } while( true ); } ================================================================== ### EXPORT FUNC 18000cdd0 (65 bytes) name=_Init_thread_notify /* WARNING: Switch with 1 destination removed at 0x00018000cdeb */ /* Library Function - Single Match _Init_thread_notify Library: Visual Studio 2019 Release */ void _Init_thread_notify(void) { if (DAT_180015fa0 == (code *)0x0) { SetEvent(DAT_180015f68); /* WARNING: Could not recover jumptable at 0x00018000ce0a. Too many branches */ /* WARNING: Treating indirect jump as call */ ResetEvent(DAT_180015f68); return; } /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ /* WARNING: Treating indirect jump as call */ (*DAT_180015fa0)(&DAT_180015f60); return; } ================================================================== ### EXPORT FUNC 18000ce14 (99 bytes) name=_Init_thread_wait /* WARNING: Switch with 1 destination removed at 0x00018000ce3e */ /* Library Function - Single Match _Init_thread_wait Library: Visual Studio 2019 Release */ void _Init_thread_wait(DWORD param_1) { if (DAT_180015f98 == (code *)0x0) { LeaveCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); WaitForSingleObjectEx(DAT_180015f68,param_1,0); /* WARNING: Could not recover jumptable at 0x00018000ce70. Too many branches */ /* WARNING: Treating indirect jump as call */ EnterCriticalSection((LPCRITICAL_SECTION)&DAT_180015f70); return; } /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ /* WARNING: Treating indirect jump as call */ (*DAT_180015f98)(&DAT_180015f60,&DAT_180015f70,param_1); return; } ================================================================== ### EXPORT FUNC 18000ce78 (5 bytes) name=thunk_FUN_18000c554 void thunk_FUN_18000c554(size_t param_1) { int iVar1; void *pvVar2; do { pvVar2 = malloc(param_1); if (pvVar2 != (void *)0x0) { return; } iVar1 = _callnewh(param_1); } while (iVar1 != 0); if (param_1 == 0xffffffffffffffff) { /* WARNING: Subroutine does not return */ FUN_180001750(); } /* WARNING: Subroutine does not return */ FUN_18000d200(); } ================================================================== ### EXPORT FUNC 18000ce80 (80 bytes) name=FUN_18000ce80 ulonglong FUN_18000ce80(undefined8 param_1,int param_2,longlong param_3) { byte bVar1; ulonglong uVar2; undefined7 extraout_var; if (param_2 == 0) { bVar1 = FUN_18000cfe8(CONCAT71((int7)((ulonglong)param_1 >> 8),param_3 != 0)); return CONCAT71(extraout_var,bVar1); } if (param_2 != 1) { if (param_2 == 2) { bVar1 = FUN_18000c618(); } else { if (param_2 != 3) { return 1; } bVar1 = FUN_18000c640(); } return (ulonglong)bVar1; } uVar2 = FUN_18000ced0(param_1,param_3); return uVar2; } ================================================================== ### EXPORT FUNC 18000ced0 (276 bytes) name=FUN_18000ced0 undefined8 FUN_18000ced0(undefined8 param_1,undefined8 param_2) { bool bVar1; bool bVar2; int iVar3; undefined8 uVar4; undefined8 uVar5; longlong *plVar6; ulonglong uVar7; uVar4 = __scrt_initialize_crt(0); if ((char)uVar4 != '\0') { uVar4 = __scrt_acquire_startup_lock(); bVar1 = true; if (DAT_1800159a0 != 0) { /* WARNING: Subroutine does not return */ __scrt_fastfail(7); } DAT_1800159a0 = 1; bVar2 = FUN_18000c600(); if (bVar2) { FUN_18000d620(); FUN_18000d5d8(); FUN_18000d5fc(); iVar3 = _initterm_e(&DAT_18000f5a0,&DAT_18000f5b0); if ((iVar3 == 0) && (uVar5 = __scrt_dllmain_after_initialize_c(), (char)uVar5 != '\0')) { _initterm(&DAT_18000f4e0,&DAT_18000f598); DAT_1800159a0 = 2; bVar1 = false; } } __scrt_release_startup_lock((char)uVar4); if (!bVar1) { plVar6 = (longlong *)FUN_18000d618(); if ((*plVar6 != 0) && (uVar7 = __scrt_is_nonwritable_in_current_image((longlong)plVar6), (char)uVar7 != '\0')) { (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,2,param_2); } DAT_180015fa8 = DAT_180015fa8 + 1; return 1; } } return 0; } ================================================================== ### EXPORT FUNC 18000cfe8 (129 bytes) name=FUN_18000cfe8 byte FUN_18000cfe8(undefined8 param_1) { undefined1 uVar1; char cVar2; undefined8 uVar3; undefined7 uVar4; byte bVar5; uVar1 = (undefined1)param_1; if (DAT_180015fa8 < 1) { bVar5 = 0; } else { DAT_180015fa8 = DAT_180015fa8 + -1; uVar3 = __scrt_acquire_startup_lock(); if (DAT_1800159a0 != 2) { /* WARNING: Subroutine does not return */ __scrt_fastfail(7); } __scrt_dllmain_uninitialize_c(); FUN_18000d5e8(); FUN_18000d65c(); DAT_1800159a0 = 0; uVar4 = (undefined7)((ulonglong)param_1 >> 8); __scrt_release_startup_lock((char)uVar3); cVar2 = __scrt_uninitialize_crt(CONCAT71(uVar4,uVar1),'\0'); bVar5 = -(cVar2 != '\0') & 1; FUN_18000c6e8(); } return bVar5; } ================================================================== ### EXPORT FUNC 18000d06c (301 bytes) name=dllmain_dispatch /* Library Function - Single Match int __cdecl dllmain_dispatch(struct HINSTANCE__ * __ptr64 const,unsigned long,void * __ptr64 const) Library: Visual Studio 2017 Release */ int __cdecl dllmain_dispatch(HINSTANCE__ *param_1,ulong param_2,void *param_3) { ulonglong uVar1; undefined8 uVar2; int iVar3; if ((param_2 == 0) && (DAT_180015fa8 < 1)) { iVar3 = 0; } else { if (param_2 - 1 < 2) { if ((DAT_18000f6c8 != 0) && (iVar3 = (*(code *)PTR__guard_dispatch_icall_18000f4d8)(), iVar3 == 0)) { return 0; } uVar1 = FUN_18000ce80(param_1,param_2,(longlong)param_3); if ((int)uVar1 == 0) { return 0; } } uVar2 = FUN_180001540(); iVar3 = (int)uVar2; if ((param_2 == 1) && (iVar3 == 0)) { FUN_180001540(); FUN_18000ce80(param_1,0,(longlong)param_3); if (DAT_18000f6c8 != 0) { (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,0,param_3); } } if ((param_2 == 0) || (param_2 == 3)) { uVar1 = FUN_18000ce80(param_1,param_2,(longlong)param_3); iVar3 = 0; if ((int)uVar1 != 0) { if (DAT_18000f6c8 == 0) { iVar3 = 1; } else { iVar3 = (*(code *)PTR__guard_dispatch_icall_18000f4d8)(param_1,param_2,param_3); } } } } return iVar3; } ================================================================== ### EXPORT FUNC 18000d1a0 (61 bytes) name=entry void entry(HINSTANCE__ *param_1,ulong param_2,void *param_3) { if (param_2 == 1) { __security_init_cookie(); } dllmain_dispatch(param_1,param_2,param_3); return; } ================================================================== ### EXPORT FUNC 18000d1e0 (30 bytes) name=FUN_18000d1e0 undefined8 * FUN_18000d1e0(undefined8 *param_1) { param_1[2] = 0; param_1[1] = "bad allocation"; *param_1 = std::bad_alloc::vftable; return param_1; } ================================================================== ### EXPORT FUNC 18000d200 (31 bytes) name=FUN_18000d200 void FUN_18000d200(void) { undefined8 local_28 [5]; FUN_18000d1e0(local_28); /* WARNING: Subroutine does not return */ _CxxThrowException(local_28,(ThrowInfo *)&DAT_180013270); } ================================================================== ### EXPORT FUNC 18000d220 (417 bytes) name=__isa_available_init /* WARNING: Removing unreachable block (ram,0x00018000d2df) */ /* WARNING: Removing unreachable block (ram,0x00018000d25a) */ /* WARNING: Removing unreachable block (ram,0x00018000d233) */ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ /* Library Function - Single Match __isa_available_init Library: Visual Studio 2019 Release */ undefined8 __isa_available_init(void) { int *piVar1; uint *puVar2; longlong lVar3; uint uVar4; undefined8 uVar5; byte bVar6; uint uVar7; uint uVar8; byte in_XCR0; piVar1 = (int *)cpuid_basic_info(0); uVar8 = 0; puVar2 = (uint *)cpuid_Version_info(1); uVar4 = puVar2[3]; if ((piVar1[1] == 0x756e6547 && piVar1[3] == 0x6c65746e) && piVar1[2] == 0x49656e69) { _DAT_180015020 = 0xffffffffffffffff; uVar7 = *puVar2 & 0xfff3ff0; if ((((uVar7 == 0x106c0) || (uVar7 == 0x20660)) || (uVar7 == 0x20670)) || ((uVar7 - 0x30650 < 0x21 && ((0x100010001U >> ((ulonglong)(uVar7 - 0x30650) & 0x3f) & 1) != 0)))) { DAT_180015fac = DAT_180015fac | 1; } } if (6 < *piVar1) { lVar3 = cpuid_Extended_Feature_Enumeration_info(7); uVar8 = *(uint *)(lVar3 + 4); if ((uVar8 >> 9 & 1) != 0) { DAT_180015fac = DAT_180015fac | 2; } } _DAT_180015018 = 1; DAT_18001501c = 2; if ((uVar4 >> 0x14 & 1) != 0) { _DAT_180015018 = 2; DAT_18001501c = 6; if (((uVar4 >> 0x1b & 1) != 0) && ((uVar4 >> 0x1c & 1) != 0)) { uVar5 = xinuse(0); bVar6 = in_XCR0 & (byte)uVar5; if ((bVar6 & 6) == 6) { DAT_18001501c = 0xe; _DAT_180015018 = 3; if ((uVar8 & 0x20) != 0) { _DAT_180015018 = 5; DAT_18001501c = 0x2e; if (((uVar8 & 0xd0030000) == 0xd0030000) && ((bVar6 & 0xe0) == 0xe0)) { DAT_18001501c = 0x6e; _DAT_180015018 = 6; } } } } } return 0; } ================================================================== ### EXPORT FUNC 18000d3c4 (12 bytes) name=__scrt_is_ucrt_dll_in_use /* Library Function - Single Match __scrt_is_ucrt_dll_in_use Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ bool __scrt_is_ucrt_dll_in_use(void) { return DAT_180015030 != 0; } ================================================================== ### EXPORT FUNC 18000d3d0 (8 bytes) name=FUN_18000d3d0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000d3d0(void) { _DAT_180015fb0 = 0; return; } ================================================================== ### EXPORT FUNC 18000d3d8 (330 bytes) name=__scrt_fastfail /* Library Function - Single Match __scrt_fastfail Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ void __scrt_fastfail(undefined4 param_1) { code *pcVar1; BOOL BVar2; LONG LVar3; PRUNTIME_FUNCTION FunctionEntry; undefined1 *puVar4; undefined8 unaff_retaddr; DWORD64 local_res10; undefined1 local_res18 [8]; undefined1 local_res20 [8]; undefined1 auStack_5c8 [8]; undefined1 auStack_5c0 [232]; undefined1 local_4d8 [152]; undefined1 *local_440; DWORD64 local_3e0; puVar4 = auStack_5c8; BVar2 = IsProcessorFeaturePresent(0x17); if (BVar2 != 0) { pcVar1 = (code *)swi(0x29); (*pcVar1)(param_1); puVar4 = auStack_5c0; } *(undefined8 *)(puVar4 + -8) = 0x18000d40b; FUN_18000d3d0(); *(undefined8 *)(puVar4 + -8) = 0x18000d41c; memset(local_4d8,0,0x4d0); *(undefined8 *)(puVar4 + -8) = 0x18000d426; RtlCaptureContext(local_4d8); *(undefined8 *)(puVar4 + -8) = 0x18000d440; FunctionEntry = RtlLookupFunctionEntry(local_3e0,&local_res10,(PUNWIND_HISTORY_TABLE)0x0); if (FunctionEntry != (PRUNTIME_FUNCTION)0x0) { *(undefined8 *)(puVar4 + 0x38) = 0; *(undefined1 **)(puVar4 + 0x30) = local_res18; *(undefined1 **)(puVar4 + 0x28) = local_res20; *(undefined1 **)(puVar4 + 0x20) = local_4d8; *(undefined8 *)(puVar4 + -8) = 0x18000d481; RtlVirtualUnwind(0,local_res10,local_3e0,FunctionEntry,*(PCONTEXT *)(puVar4 + 0x20), *(PVOID **)(puVar4 + 0x28),*(PDWORD64 *)(puVar4 + 0x30), *(PKNONVOLATILE_CONTEXT_POINTERS *)(puVar4 + 0x38)); } local_440 = &stack0x00000008; *(undefined8 *)(puVar4 + -8) = 0x18000d4b3; memset(puVar4 + 0x50,0,0x98); *(undefined8 *)(puVar4 + 0x60) = unaff_retaddr; *(undefined4 *)(puVar4 + 0x50) = 0x40000015; *(undefined4 *)(puVar4 + 0x54) = 1; *(undefined8 *)(puVar4 + -8) = 0x18000d4d5; BVar2 = IsDebuggerPresent(); *(undefined1 **)(puVar4 + 0x40) = puVar4 + 0x50; *(undefined1 **)(puVar4 + 0x48) = local_4d8; *(undefined8 *)(puVar4 + -8) = 0x18000d4f6; SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0); *(undefined8 *)(puVar4 + -8) = 0x18000d501; LVar3 = UnhandledExceptionFilter((_EXCEPTION_POINTERS *)(puVar4 + 0x40)); if ((LVar3 == 0) && (BVar2 != 1)) { *(undefined8 *)(puVar4 + -8) = 0x18000d511; FUN_18000d3d0(); } return; } ================================================================== ### EXPORT FUNC 18000d524 (5 bytes) name=free void __cdecl free(void *_Memory) { /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ /* WARNING: Treating indirect jump as call */ free(_Memory); return; } ================================================================== ### EXPORT FUNC 18000d52c (172 bytes) name=__security_init_cookie /* Library Function - Single Match __security_init_cookie Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ void __cdecl __security_init_cookie(void) { DWORD DVar1; _FILETIME local_res8; _FILETIME local_res10; LARGE_INTEGER local_res18; if (DAT_180015010 == 0x2b992ddfa232) { local_res10.dwLowDateTime = 0; local_res10.dwHighDateTime = 0; GetSystemTimeAsFileTime(&local_res10); local_res8 = local_res10; DVar1 = GetCurrentThreadId(); local_res8 = (_FILETIME)((ulonglong)local_res8 ^ (ulonglong)DVar1); DVar1 = GetCurrentProcessId(); local_res8 = (_FILETIME)((ulonglong)local_res8 ^ (ulonglong)DVar1); QueryPerformanceCounter(&local_res18); DAT_180015010 = ((ulonglong)local_res18.s.LowPart << 0x20 ^ CONCAT44(local_res18.s.HighPart,local_res18.s.LowPart) ^ (ulonglong)local_res8 ^ (ulonglong)&local_res8) & 0xffffffffffff; if (DAT_180015010 == 0x2b992ddfa232) { DAT_180015010 = 0x2b992ddfa233; } } DAT_180015008 = ~DAT_180015010; return; } ================================================================== ### EXPORT FUNC 18000d5d8 (14 bytes) name=FUN_18000d5d8 void FUN_18000d5d8(void) { /* WARNING: Could not recover jumptable at 0x00018000d5df. Too many branches */ /* WARNING: Treating indirect jump as call */ InitializeSListHead(&DAT_180015fc0); return; } ================================================================== ### EXPORT FUNC 18000d5e8 (12 bytes) name=FUN_18000d5e8 void FUN_18000d5e8(void) { __std_type_info_destroy_list(&DAT_180015fc0); return; } ================================================================== ### EXPORT FUNC 18000d5f4 (8 bytes) name=FUN_18000d5f4 undefined * FUN_18000d5f4(void) { return &DAT_180015fd0; } ================================================================== ### EXPORT FUNC 18000d5fc (27 bytes) name=FUN_18000d5fc void FUN_18000d5fc(void) { ulonglong *puVar1; puVar1 = (ulonglong *)FUN_180002fc0(); *puVar1 = *puVar1 | 0x24; puVar1 = (ulonglong *)FUN_18000d5f4(); *puVar1 = *puVar1 | 2; return; } ================================================================== ### EXPORT FUNC 18000d618 (8 bytes) name=FUN_18000d618 undefined * FUN_18000d618(void) { return &DAT_1800160e8; } ================================================================== ### EXPORT FUNC 18000d620 (60 bytes) name=FUN_18000d620 void FUN_18000d620(void) { longlong *plVar1; for (plVar1 = &DAT_180011b20; plVar1 < &DAT_180011b20; plVar1 = plVar1 + 1) { if (*plVar1 != 0) { (*(code *)PTR__guard_dispatch_icall_18000f4d8)(); } } return; } ================================================================== ### EXPORT FUNC 18000d65c (60 bytes) name=FUN_18000d65c void FUN_18000d65c(void) { longlong *plVar1; for (plVar1 = &DAT_180011b30; plVar1 < &DAT_180011b30; plVar1 = plVar1 + 1) { if (*plVar1 != 0) { (*(code *)PTR__guard_dispatch_icall_18000f4d8)(); } } return; } ================================================================== ### EXPORT FUNC 18000d6a0 (6 bytes) name=_Lock void __thiscall std::basic_streambuf_>::_Lock (basic_streambuf_> *this) { /* WARNING: Could not recover jumptable at 0x00018000d6a0. Too many branches */ /* WARNING: Treating indirect jump as call */ _Lock(this); return; } ================================================================== ### EXPORT FUNC 18000d6a6 (6 bytes) name=_Unlock void __thiscall std::basic_streambuf_>::_Unlock (basic_streambuf_> *this) { /* WARNING: Could not recover jumptable at 0x00018000d6a6. Too many branches */ /* WARNING: Treating indirect jump as call */ _Unlock(this); return; } ================================================================== ### EXPORT FUNC 18000d6ac (6 bytes) name=showmanyc __int64 __thiscall std::basic_streambuf_>::showmanyc (basic_streambuf_> *this) { __int64 _Var1; /* WARNING: Could not recover jumptable at 0x00018000d6ac. Too many branches */ /* WARNING: Treating indirect jump as call */ _Var1 = showmanyc(this); return _Var1; } ================================================================== ### EXPORT FUNC 18000d6b2 (6 bytes) name=uflow int __thiscall std::basic_streambuf_>::uflow (basic_streambuf_> *this) { int iVar1; /* WARNING: Could not recover jumptable at 0x00018000d6b2. Too many branches */ /* WARNING: Treating indirect jump as call */ iVar1 = uflow(this); return iVar1; } ================================================================== ### EXPORT FUNC 18000d6b8 (6 bytes) name=xsgetn __int64 __thiscall std::basic_streambuf_>::xsgetn (basic_streambuf_> *this,char *param_1,__int64 param_2) { __int64 _Var1; /* WARNING: Could not recover jumptable at 0x00018000d6b8. Too many branches */ /* WARNING: Treating indirect jump as call */ _Var1 = xsgetn(this,param_1,param_2); return _Var1; } ================================================================== ### EXPORT FUNC 18000d6be (6 bytes) name=xsputn __int64 __thiscall std::basic_streambuf_>::xsputn (basic_streambuf_> *this,char *param_1,__int64 param_2) { __int64 _Var1; /* WARNING: Could not recover jumptable at 0x00018000d6be. Too many branches */ /* WARNING: Treating indirect jump as call */ _Var1 = xsputn(this,param_1,param_2); return _Var1; } ================================================================== ### EXPORT FUNC 18000d6c4 (6 bytes) name=setbuf basic_streambuf_> * __thiscall std::basic_streambuf_>::setbuf (basic_streambuf_> *this,char *param_1,__int64 param_2) { basic_streambuf_> *pbVar1; /* WARNING: Could not recover jumptable at 0x00018000d6c4. Too many branches */ /* WARNING: Treating indirect jump as call */ pbVar1 = setbuf(this,param_1,param_2); return pbVar1; } ================================================================== ### EXPORT FUNC 18000d6ca (6 bytes) name=sync int __thiscall std::basic_streambuf_>::sync (basic_streambuf_> *this) { int iVar1; /* WARNING: Could not recover jumptable at 0x00018000d6ca. Too many branches */ /* WARNING: Treating indirect jump as call */ iVar1 = sync(this); return iVar1; } ================================================================== ### EXPORT FUNC 18000d6d0 (6 bytes) name=imbue void __thiscall std::basic_streambuf_>::imbue (basic_streambuf_> *this,locale *param_1) { /* WARNING: Could not recover jumptable at 0x00018000d6d0. Too many branches */ /* WARNING: Treating indirect jump as call */ imbue(this,param_1); return; } ================================================================== ### EXPORT FUNC 18000d6d6 (6 bytes) name=__CxxFrameHandler4 void __CxxFrameHandler4(void) { /* WARNING: Could not recover jumptable at 0x00018000d6d6. Too many branches */ /* WARNING: Treating indirect jump as call */ __CxxFrameHandler4(); return; } ================================================================== ### EXPORT FUNC 18000d6e8 (6 bytes) name=_CxxThrowException void __stdcall _CxxThrowException(void *pExceptionObject,ThrowInfo *pThrowInfo) { /* WARNING: Could not recover jumptable at 0x00018000d6e8. Too many branches */ /* WARNING: Subroutine does not return */ /* WARNING: Treating indirect jump as call */ _CxxThrowException(pExceptionObject,pThrowInfo); return; } ================================================================== ### EXPORT FUNC 18000d6ee (6 bytes) name=memset void * __cdecl memset(void *_Dst,int _Val,size_t _Size) { void *pvVar1; /* WARNING: Could not recover jumptable at 0x00018000d6ee. Too many branches */ /* WARNING: Treating indirect jump as call */ pvVar1 = memset(_Dst,_Val,_Size); return pvVar1; } ================================================================== ### EXPORT FUNC 18000d6f4 (6 bytes) name=__std_type_info_destroy_list void __std_type_info_destroy_list(void) { /* WARNING: Could not recover jumptable at 0x00018000d6f4. Too many branches */ /* WARNING: Treating indirect jump as call */ __std_type_info_destroy_list(); return; } ================================================================== ### EXPORT FUNC 18000d6fa (6 bytes) name=_callnewh int __cdecl _callnewh(size_t _Size) { int iVar1; /* WARNING: Could not recover jumptable at 0x00018000d6fa. Too many branches */ /* WARNING: Treating indirect jump as call */ iVar1 = _callnewh(_Size); return iVar1; } ================================================================== ### EXPORT FUNC 18000d700 (6 bytes) name=malloc void * __cdecl malloc(size_t _Size) { void *pvVar1; /* WARNING: Could not recover jumptable at 0x00018000d700. Too many branches */ /* WARNING: Treating indirect jump as call */ pvVar1 = malloc(_Size); return pvVar1; } ================================================================== ### EXPORT FUNC 18000d706 (6 bytes) name=_seh_filter_dll void _seh_filter_dll(void) { /* WARNING: Could not recover jumptable at 0x00018000d706. Too many branches */ /* WARNING: Treating indirect jump as call */ _seh_filter_dll(); return; } ================================================================== ### EXPORT FUNC 18000d70c (6 bytes) name=_configure_narrow_argv void _configure_narrow_argv(void) { /* WARNING: Could not recover jumptable at 0x00018000d70c. Too many branches */ /* WARNING: Treating indirect jump as call */ _configure_narrow_argv(); return; } ================================================================== ### EXPORT FUNC 18000d712 (6 bytes) name=_initialize_narrow_environment void _initialize_narrow_environment(void) { /* WARNING: Could not recover jumptable at 0x00018000d712. Too many branches */ /* WARNING: Treating indirect jump as call */ _initialize_narrow_environment(); return; } ================================================================== ### EXPORT FUNC 18000d718 (6 bytes) name=_initialize_onexit_table void _initialize_onexit_table(void) { /* WARNING: Could not recover jumptable at 0x00018000d718. Too many branches */ /* WARNING: Treating indirect jump as call */ _initialize_onexit_table(); return; } ================================================================== ### EXPORT FUNC 18000d71e (6 bytes) name=_register_onexit_function void _register_onexit_function(void) { /* WARNING: Could not recover jumptable at 0x00018000d71e. Too many branches */ /* WARNING: Treating indirect jump as call */ _register_onexit_function(); return; } ================================================================== ### EXPORT FUNC 18000d724 (6 bytes) name=_execute_onexit_table void _execute_onexit_table(void) { /* WARNING: Could not recover jumptable at 0x00018000d724. Too many branches */ /* WARNING: Treating indirect jump as call */ _execute_onexit_table(); return; } ================================================================== ### EXPORT FUNC 18000d72a (6 bytes) name=_crt_atexit void _crt_atexit(void) { /* WARNING: Could not recover jumptable at 0x00018000d72a. Too many branches */ /* WARNING: Treating indirect jump as call */ _crt_atexit(); return; } ================================================================== ### EXPORT FUNC 18000d730 (6 bytes) name=_cexit void __cdecl _cexit(void) { /* WARNING: Could not recover jumptable at 0x00018000d730. Too many branches */ /* WARNING: Treating indirect jump as call */ _cexit(); return; } ================================================================== ### EXPORT FUNC 18000d736 (6 bytes) name=_initterm void _initterm(void) { /* WARNING: Could not recover jumptable at 0x00018000d736. Too many branches */ /* WARNING: Treating indirect jump as call */ _initterm(); return; } ================================================================== ### EXPORT FUNC 18000d73c (6 bytes) name=_initterm_e void _initterm_e(void) { /* WARNING: Could not recover jumptable at 0x00018000d73c. Too many branches */ /* WARNING: Treating indirect jump as call */ _initterm_e(); return; } ================================================================== ### EXPORT FUNC 18000d742 (6 bytes) name=free void __cdecl free(void *_Memory) { /* WARNING: Could not recover jumptable at 0x00018000d742. Too many branches */ /* WARNING: Treating indirect jump as call */ free(_Memory); return; } ================================================================== ### EXPORT FUNC 18000d748 (6 bytes) name=IsProcessorFeaturePresent BOOL __stdcall IsProcessorFeaturePresent(DWORD ProcessorFeature) { BOOL BVar1; /* WARNING: Could not recover jumptable at 0x00018000d748. Too many branches */ /* WARNING: Treating indirect jump as call */ BVar1 = IsProcessorFeaturePresent(ProcessorFeature); return BVar1; } ================================================================== ### EXPORT FUNC 18000d750 (3 bytes) name=FUN_18000d750 undefined1 FUN_18000d750(void) { return 1; } ================================================================== ### EXPORT FUNC 18000d754 (3 bytes) name=FUN_18000d754 undefined8 FUN_18000d754(void) { return 0; } ================================================================== ### EXPORT FUNC 18000d758 (29 bytes) name=__GSHandlerCheck /* Library Function - Single Match __GSHandlerCheck Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ undefined8 __GSHandlerCheck(undefined8 param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { __GSHandlerCheckCommon(param_2,param_4); return 1; } ================================================================== ### EXPORT FUNC 18000d778 (91 bytes) name=__GSHandlerCheckCommon /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* Library Function - Single Match __GSHandlerCheckCommon Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ ulonglong __GSHandlerCheckCommon(undefined8 param_1,longlong param_2) { ulonglong uVar1; ulonglong uVar2; uVar2 = (ulonglong)*(uint *)(*(longlong *)(param_2 + 0x10) + 8); uVar1 = *(ulonglong *)(param_2 + 8); if ((*(byte *)(uVar2 + 3 + uVar1) & 0xf) != 0) { uVar1 = (ulonglong)(*(byte *)(uVar2 + 3 + uVar1) & 0xfffffff0); } return uVar1; } ================================================================== ### EXPORT FUNC 18000d7d4 (127 bytes) name=FID_conflict:__GSHandlerCheck_EH /* Library Function - Multiple Matches With Different Base Names __GSHandlerCheck_EH __GSHandlerCheck_EH4 Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release */ void FID_conflict___GSHandlerCheck_EH (longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { longlong lVar1; lVar1 = *(longlong *)(param_4 + 0x38); __GSHandlerCheckCommon(param_2,param_4); if ((*(uint *)(lVar1 + 4) & ((*(uint *)(param_1 + 4) & 0x66) != 0) + 1) != 0) { __CxxFrameHandler4(param_1,param_2,param_3,param_4); } return; } ================================================================== ### EXPORT FUNC 18000d853 (6 bytes) name=__RTDynamicCast void __RTDynamicCast(void) { /* WARNING: Could not recover jumptable at 0x00018000d853. Too many branches */ /* WARNING: Treating indirect jump as call */ __RTDynamicCast(); return; } ================================================================== ### EXPORT FUNC 18000d859 (6 bytes) name=memchr void * __cdecl memchr(void *_Buf,int _Val,size_t _MaxCount) { void *pvVar1; /* WARNING: Could not recover jumptable at 0x00018000d859. Too many branches */ /* WARNING: Treating indirect jump as call */ pvVar1 = memchr(_Buf,_Val,_MaxCount); return pvVar1; } ================================================================== ### EXPORT FUNC 18000d85f (6 bytes) name=memcmp int __cdecl memcmp(void *_Buf1,void *_Buf2,size_t _Size) { int iVar1; /* WARNING: Could not recover jumptable at 0x00018000d85f. Too many branches */ /* WARNING: Treating indirect jump as call */ iVar1 = memcmp(_Buf1,_Buf2,_Size); return iVar1; } ================================================================== ### EXPORT FUNC 18000d865 (6 bytes) name=memcpy void * __cdecl memcpy(void *_Dst,void *_Src,size_t _Size) { void *pvVar1; /* WARNING: Could not recover jumptable at 0x00018000d865. Too many branches */ /* WARNING: Treating indirect jump as call */ pvVar1 = memcpy(_Dst,_Src,_Size); return pvVar1; } ================================================================== ### EXPORT FUNC 18000d86b (6 bytes) name=memmove void * __cdecl memmove(void *_Dst,void *_Src,size_t _Size) { void *pvVar1; /* WARNING: Could not recover jumptable at 0x00018000d86b. Too many branches */ /* WARNING: Treating indirect jump as call */ pvVar1 = memmove(_Dst,_Src,_Size); return pvVar1; } ================================================================== ### EXPORT FUNC 18000d890 (2 bytes) name=_guard_dispatch_icall /* WARNING: This is an inlined function */ void _guard_dispatch_icall(void) { code *UNRECOVERED_JUMPTABLE; /* WARNING: Could not recover jumptable at 0x00018000d890. Too many branches */ /* WARNING: Treating indirect jump as call */ (*UNRECOVERED_JUMPTABLE)(); return; } ================================================================== ### EXPORT FUNC 18000d8d0 (41 bytes) name=FUN_18000d8d0 void FUN_18000d8d0(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x40) & 1) != 0) { *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; FUN_180002da0(*(longlong **)(param_2 + 0x88)); } return; } ================================================================== ### EXPORT FUNC 18000d98c (48 bytes) name=FUN_18000d98c void FUN_18000d98c(undefined8 param_1,longlong param_2) { FUN_180002f30(param_1,*(longlong **)(param_2 + 0x20),*(longlong **)(param_2 + 0x40)); deallocate(param_1,*(void **)(param_2 + 0x28),*(longlong *)(param_2 + 0x30)); /* WARNING: Subroutine does not return */ _CxxThrowException((void *)0x0,(ThrowInfo *)0x0); } ================================================================== ### EXPORT FUNC 18000d9dc (46 bytes) name=FUN_18000d9dc void FUN_18000d9dc(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 1) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; std::basic_ios_>::~basic_ios_> ((basic_ios_> *)(param_2 + 0xf8)); } return; } ================================================================== ### EXPORT FUNC 18000da28 (38 bytes) name=FUN_18000da28 void FUN_18000da28(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 4) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffb; FUN_1800024b0((longlong *)(param_2 + 0x28)); } return; } ================================================================== ### EXPORT FUNC 18000da98 (46 bytes) name=FUN_18000da98 void FUN_18000da98(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 1) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; std::basic_ios_>::~basic_ios_> ((basic_ios_> *)(param_2 + 0x108)); } return; } ================================================================== ### EXPORT FUNC 18000dae4 (38 bytes) name=FUN_18000dae4 void FUN_18000dae4(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 4) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffb; FUN_1800024b0((longlong *)(param_2 + 0x28)); } return; } ================================================================== ### EXPORT FUNC 18000db3c (38 bytes) name=FUN_18000db3c void FUN_18000db3c(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x30) & 2) != 0) { *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) & 0xfffffffd; FUN_1800037c0(*(longlong **)(param_2 + 0x38)); } return; } ================================================================== ### EXPORT FUNC 18000db7c (49 bytes) name=FUN_18000db7c void FUN_18000db7c(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x40) & 1) != 0) { *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; std::basic_ios_>::~basic_ios_> ((basic_ios_> *)(param_2 + 0x1d8)); } return; } ================================================================== ### EXPORT FUNC 18000dc40 (38 bytes) name=FUN_18000dc40 void FUN_18000dc40(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 2) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffd; FUN_1800024b0(*(longlong **)(param_2 + 0x30)); } return; } ================================================================== ### EXPORT FUNC 18000dc70 (46 bytes) name=FUN_18000dc70 void FUN_18000dc70(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x40) & 1) != 0) { *(uint *)(param_2 + 0x40) = *(uint *)(param_2 + 0x40) & 0xfffffffe; std::basic_ios_>::~basic_ios_> ((basic_ios_> *)(*(longlong *)(param_2 + 0x30) + 0x98)); } return; } ================================================================== ### EXPORT FUNC 18000dcc8 (58 bytes) name=FUN_18000dcc8 undefined8 FUN_18000dcc8(undefined8 param_1,longlong param_2) { std::basic_ios_>::setstate ((basic_ios_> *) ((longlong)*(int *)(**(longlong **)(param_2 + 0x60) + 4) + (longlong)*(longlong **)(param_2 + 0x60)),4,true); return 0; } ================================================================== ### EXPORT FUNC 18000dd10 (29 bytes) name=FUN_18000dd10 void FUN_18000dd10(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x20)); return; } ================================================================== ### EXPORT FUNC 18000dd70 (29 bytes) name=FUN_18000dd70 undefined8 FUN_18000dd70(void) { return 0; } ================================================================== ### EXPORT FUNC 18000dd90 (29 bytes) name=FUN_18000dd90 void FUN_18000dd90(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x68)); return; } ================================================================== ### EXPORT FUNC 18000ddb9 (41 bytes) name=FUN_18000ddb9 undefined8 FUN_18000ddb9(undefined8 param_1,longlong param_2) { *(undefined8 *)(*(longlong *)(param_2 + 0x60) + 0x20) = 0; return 0; } ================================================================== ### EXPORT FUNC 18000de3c (29 bytes) name=FUN_18000de3c void FUN_18000de3c(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x40)); return; } ================================================================== ### EXPORT FUNC 18000de98 (29 bytes) name=FUN_18000de98 void FUN_18000de98(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x28)); return; } ================================================================== ### EXPORT FUNC 18000df1c (29 bytes) name=FUN_18000df1c void FUN_18000df1c(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x40)); return; } ================================================================== ### EXPORT FUNC 18000df50 (29 bytes) name=FUN_18000df50 void FUN_18000df50(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x20)); return; } ================================================================== ### EXPORT FUNC 18000df9c (29 bytes) name=FUN_18000df9c void FUN_18000df9c(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x38)); return; } ================================================================== ### EXPORT FUNC 18000e030 (38 bytes) name=FUN_18000e030 void FUN_18000e030(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x20) & 1) != 0) { *(uint *)(param_2 + 0x20) = *(uint *)(param_2 + 0x20) & 0xfffffffe; FUN_180002420(*(longlong **)(param_2 + 0x48)); } return; } ================================================================== ### EXPORT FUNC 18000e090 (29 bytes) name=FUN_18000e090 void FUN_18000e090(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e0ad (29 bytes) name=FUN_18000e0ad void FUN_18000e0ad(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e0ca (29 bytes) name=FUN_18000e0ca void FUN_18000e0ca(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e0e7 (29 bytes) name=FUN_18000e0e7 void FUN_18000e0e7(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e104 (29 bytes) name=FUN_18000e104 void FUN_18000e104(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e121 (29 bytes) name=FUN_18000e121 void FUN_18000e121(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e13e (29 bytes) name=FUN_18000e13e void FUN_18000e13e(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e15b (29 bytes) name=FUN_18000e15b void FUN_18000e15b(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e1d0 (38 bytes) name=FUN_18000e1d0 void FUN_18000e1d0(undefined8 param_1,longlong param_2) { if ((*(uint *)(param_2 + 0x24) & 1) != 0) { *(uint *)(param_2 + 0x24) = *(uint *)(param_2 + 0x24) & 0xfffffffe; FUN_180002420(*(longlong **)(param_2 + 0x28)); } return; } ================================================================== ### EXPORT FUNC 18000e220 (29 bytes) name=FUN_18000e220 void FUN_18000e220(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x50)); return; } ================================================================== ### EXPORT FUNC 18000e24d (29 bytes) name=FUN_18000e24d void FUN_18000e24d(undefined8 param_1,longlong param_2) { free(*(void **)(param_2 + 0x58)); return; } ================================================================== ### EXPORT FUNC 18000e26a (23 bytes) name=FUN_18000e26a bool FUN_18000e26a(undefined8 *param_1) { return *(int *)*param_1 == -0x3ffffffb; } ================================================================== ### EXPORT FUNC 18000e282 (22 bytes) name=FUN_18000e282 void FUN_18000e282(undefined8 param_1,longlong param_2) { __scrt_release_startup_lock(*(char *)(param_2 + 0x40)); return; } ================================================================== ### EXPORT FUNC 18000e299 (24 bytes) name=FUN_18000e299 void FUN_18000e299(undefined8 param_1,longlong param_2) { __scrt_release_startup_lock(*(char *)(param_2 + 0x20)); return; } ================================================================== ### EXPORT FUNC 18000e2b2 (19 bytes) name=FUN_18000e2b2 void FUN_18000e2b2(void) { FUN_18000c6e8(); return; } ================================================================== ### EXPORT FUNC 18000e2c6 (53 bytes) name=FUN_18000e2c6 void FUN_18000e2c6(undefined8 *param_1,longlong param_2) { __scrt_dllmain_exception_filter (*(undefined8 *)(param_2 + 0x60),*(int *)(param_2 + 0x68), *(undefined8 *)(param_2 + 0x70),FUN_18000ce80,*(undefined4 *)*param_1,param_1); return; } ================================================================== ### EXPORT FUNC 18000e300 (97 bytes) name=FUN_18000e300 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e300(void) { void *_Memory; if (DAT_180016060 != (void *)0x0) { _Memory = DAT_180016060; if ((0xfff < (ulonglong)(DAT_180016070 - (longlong)DAT_180016060)) && (_Memory = *(void **)((longlong)DAT_180016060 + -8), 0x1f < (ulonglong)((longlong)DAT_180016060 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016060 = (void *)0x0; _DAT_180016068 = 0; DAT_180016070 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e370 (97 bytes) name=FUN_18000e370 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e370(void) { void *_Memory; if (DAT_180016000 != (void *)0x0) { _Memory = DAT_180016000; if ((0xfff < (ulonglong)(DAT_180016010 - (longlong)DAT_180016000)) && (_Memory = *(void **)((longlong)DAT_180016000 + -8), 0x1f < (ulonglong)((longlong)DAT_180016000 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016000 = (void *)0x0; _DAT_180016008 = 0; DAT_180016010 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e3e0 (97 bytes) name=FUN_18000e3e0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e3e0(void) { void *_Memory; if (DAT_180016018 != (void *)0x0) { _Memory = DAT_180016018; if ((0xfff < (ulonglong)(DAT_180016028 - (longlong)DAT_180016018)) && (_Memory = *(void **)((longlong)DAT_180016018 + -8), 0x1f < (ulonglong)((longlong)DAT_180016018 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016018 = (void *)0x0; _DAT_180016020 = 0; DAT_180016028 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e450 (97 bytes) name=FUN_18000e450 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e450(void) { void *_Memory; if (DAT_180016090 != (void *)0x0) { _Memory = DAT_180016090; if ((0xfff < (ulonglong)(DAT_1800160a0 - (longlong)DAT_180016090)) && (_Memory = *(void **)((longlong)DAT_180016090 + -8), 0x1f < (ulonglong)((longlong)DAT_180016090 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016090 = (void *)0x0; _DAT_180016098 = 0; DAT_1800160a0 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e4c0 (97 bytes) name=FUN_18000e4c0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e4c0(void) { void *_Memory; if (DAT_180016078 != (void *)0x0) { _Memory = DAT_180016078; if ((0xfff < (ulonglong)(DAT_180016088 - (longlong)DAT_180016078)) && (_Memory = *(void **)((longlong)DAT_180016078 + -8), 0x1f < (ulonglong)((longlong)DAT_180016078 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016078 = (void *)0x0; _DAT_180016080 = 0; DAT_180016088 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e530 (97 bytes) name=FUN_18000e530 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e530(void) { void *_Memory; if (DAT_180016030 != (void *)0x0) { _Memory = DAT_180016030; if ((0xfff < (ulonglong)(DAT_180016040 - (longlong)DAT_180016030)) && (_Memory = *(void **)((longlong)DAT_180016030 + -8), 0x1f < (ulonglong)((longlong)DAT_180016030 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016030 = (void *)0x0; _DAT_180016038 = 0; DAT_180016040 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e5a0 (97 bytes) name=FUN_18000e5a0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e5a0(void) { void *_Memory; if (DAT_1800160a8 != (void *)0x0) { _Memory = DAT_1800160a8; if ((0xfff < (ulonglong)(DAT_1800160b8 - (longlong)DAT_1800160a8)) && (_Memory = *(void **)((longlong)DAT_1800160a8 + -8), 0x1f < (ulonglong)((longlong)DAT_1800160a8 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_1800160a8 = (void *)0x0; _DAT_1800160b0 = 0; DAT_1800160b8 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e610 (97 bytes) name=FUN_18000e610 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e610(void) { void *_Memory; if (DAT_180016048 != (void *)0x0) { _Memory = DAT_180016048; if ((0xfff < (ulonglong)(DAT_180016058 - (longlong)DAT_180016048)) && (_Memory = *(void **)((longlong)DAT_180016048 + -8), 0x1f < (ulonglong)((longlong)DAT_180016048 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); DAT_180016048 = (void *)0x0; _DAT_180016050 = 0; DAT_180016058 = 0; } return; } ================================================================== ### EXPORT FUNC 18000e680 (108 bytes) name=FUN_18000e680 void FUN_18000e680(void) { void *pvVar1; void *_Memory; if (7 < DAT_1800160d8) { pvVar1 = (void *)CONCAT62(DAT_1800160c0._2_6_,(undefined2)DAT_1800160c0); _Memory = pvVar1; if ((0xfff < DAT_1800160d8 * 2 + 2) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_1800160d8 = 7; DAT_1800160d0 = 0; DAT_1800160c0._0_2_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e6f0 (105 bytes) name=FUN_18000e6f0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e6f0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015078) { pvVar1 = (void *)CONCAT71(DAT_180015060._1_7_,(undefined1)DAT_180015060); _Memory = pvVar1; if ((0xfff < DAT_180015078 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } _DAT_180015070 = 0; DAT_180015078 = 0xf; DAT_180015060._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e760 (105 bytes) name=FUN_18000e760 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e760(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800150b8) { pvVar1 = (void *)CONCAT71(DAT_1800150a0._1_7_,(undefined1)DAT_1800150a0); _Memory = pvVar1; if ((0xfff < DAT_1800150b8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } _DAT_1800150b0 = 0; DAT_1800150b8 = 0xf; DAT_1800150a0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e7d0 (105 bytes) name=FUN_18000e7d0 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000e7d0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800151f8) { pvVar1 = (void *)CONCAT71(DAT_1800151e0._1_7_,(undefined1)DAT_1800151e0); _Memory = pvVar1; if ((0xfff < DAT_1800151f8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } _DAT_1800151f0 = 0; DAT_1800151f8 = 0xf; DAT_1800151e0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e840 (105 bytes) name=FUN_18000e840 void FUN_18000e840(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015198) { pvVar1 = (void *)CONCAT71(DAT_180015180._1_7_,(undefined1)DAT_180015180); _Memory = pvVar1; if ((0xfff < DAT_180015198 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_180015190 = 0; DAT_180015198 = 0xf; DAT_180015180._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e8b0 (105 bytes) name=FUN_18000e8b0 void FUN_18000e8b0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800150f8) { pvVar1 = (void *)CONCAT71(DAT_1800150e0._1_7_,(undefined1)DAT_1800150e0); _Memory = pvVar1; if ((0xfff < DAT_1800150f8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_1800150f0 = 0; DAT_1800150f8 = 0xf; DAT_1800150e0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e920 (105 bytes) name=FUN_18000e920 void FUN_18000e920(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015178) { pvVar1 = (void *)CONCAT71(DAT_180015160._1_7_,(undefined1)DAT_180015160); _Memory = pvVar1; if ((0xfff < DAT_180015178 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_180015170 = 0; DAT_180015178 = 0xf; DAT_180015160._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000e990 (105 bytes) name=FUN_18000e990 void FUN_18000e990(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800151d8) { pvVar1 = (void *)CONCAT71(DAT_1800151c0._1_7_,(undefined1)DAT_1800151c0); _Memory = pvVar1; if ((0xfff < DAT_1800151d8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_1800151d0 = 0; DAT_1800151d8 = 0xf; DAT_1800151c0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000ea00 (105 bytes) name=FUN_18000ea00 void FUN_18000ea00(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015138) { pvVar1 = (void *)CONCAT71(DAT_180015120._1_7_,(undefined1)DAT_180015120); _Memory = pvVar1; if ((0xfff < DAT_180015138 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_180015130 = 0; DAT_180015138 = 0xf; DAT_180015120._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000ea70 (105 bytes) name=FUN_18000ea70 void FUN_18000ea70(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800150d8) { pvVar1 = (void *)CONCAT71(DAT_1800150c0._1_7_,(undefined1)DAT_1800150c0); _Memory = pvVar1; if ((0xfff < DAT_1800150d8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_1800150d0 = 0; DAT_1800150d8 = 0xf; DAT_1800150c0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000eae0 (105 bytes) name=FUN_18000eae0 void FUN_18000eae0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015158) { pvVar1 = (void *)CONCAT71(DAT_180015140._1_7_,(undefined1)DAT_180015140); _Memory = pvVar1; if ((0xfff < DAT_180015158 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_180015150 = 0; DAT_180015158 = 0xf; DAT_180015140._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000eb50 (105 bytes) name=FUN_18000eb50 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000eb50(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015118) { pvVar1 = (void *)CONCAT71(DAT_180015100._1_7_,(undefined1)DAT_180015100); _Memory = pvVar1; if ((0xfff < DAT_180015118 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } _DAT_180015110 = 0; DAT_180015118 = 0xf; DAT_180015100._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000ebc0 (105 bytes) name=FUN_18000ebc0 void FUN_18000ebc0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_1800151b8) { pvVar1 = (void *)CONCAT71(DAT_1800151a0._1_7_,(undefined1)DAT_1800151a0); _Memory = pvVar1; if ((0xfff < DAT_1800151b8 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_1800151b0 = 0; DAT_1800151b8 = 0xf; DAT_1800151a0._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000ec30 (105 bytes) name=FUN_18000ec30 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ void FUN_18000ec30(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015058) { pvVar1 = (void *)CONCAT71(DAT_180015040._1_7_,(undefined1)DAT_180015040); _Memory = pvVar1; if ((0xfff < DAT_180015058 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } _DAT_180015050 = 0; DAT_180015058 = 0xf; DAT_180015040._0_1_ = 0; return; } ================================================================== ### EXPORT FUNC 18000eca0 (105 bytes) name=FUN_18000eca0 void FUN_18000eca0(void) { void *pvVar1; void *_Memory; if (0xf < DAT_180015098) { pvVar1 = (void *)CONCAT71(DAT_180015080._1_7_,(undefined1)DAT_180015080); _Memory = pvVar1; if ((0xfff < DAT_180015098 + 1) && (_Memory = *(void **)((longlong)pvVar1 + -8), 0x1f < (ulonglong)((longlong)pvVar1 + (-8 - (longlong)_Memory)))) { /* WARNING: Subroutine does not return */ _invalid_parameter_noinfo_noreturn(); } free(_Memory); } DAT_180015090 = 0; DAT_180015098 = 0xf; DAT_180015080._0_1_ = 0; return; } ==================================================================