Files
MAG160C/analysis/sdk_re/windows_sdk/exports_decomp_ThermalSDK.dll.txt
T

13143 lines
361 KiB
Plaintext

### 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<T> 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<struct `protected: int __cdecl GSI1::readHash(unsigned
short,long,long) __ptr64'::`2'::FileSymbolInfo>::deallocate(struct `protected: int __cdecl
GSI1::readHash(unsigned short,long,long) __ptr64'::`2'::FileSymbolInfo * __ptr64 const,unsigned
__int64) __ptr64
public: void __cdecl std::allocator<struct GSISymbolEntry>::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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_90);
local_168 = 1;
std::basic_iostream<char,std::char_traits<char>_>::basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)local_128,
(basic_streambuf<char,std::char_traits<char>_> *)&local_110);
*(undefined ***)((longlong)local_128 + (longlong)*(int *)(local_128[0] + 4)) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) =
*(int *)(local_128[0] + 4) + -0x98;
std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
((basic_streambuf<char,std::char_traits<char>_> *)&local_110);
local_110 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
local_a8 = 0;
local_a0 = 0;
pbVar2 = FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)&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<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)&iStack_12c + (longlong)*(int *)(local_128[0] + 4)) =
*(int *)(local_128[0] + 4) + -0x98;
FUN_180005f90((basic_streambuf<char,std::char_traits<char>_> *)&local_110);
std::basic_iostream<char,std::char_traits<char>_>::~basic_iostream<char,std::char_traits<char>_>
(local_108);
std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(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<char,std::char_traits<char>_> *this;
this = (basic_ios<char,std::char_traits<char>_> *)(param_1 + 0x13);
*(undefined ***)(this + (longlong)*(int *)(*param_1 + 4) + -0x98) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)(this + (longlong)*(int *)(*param_1 + 4) + -0x9c) = *(int *)(*param_1 + 4) + -0x98;
FUN_180005f90((basic_streambuf<char,std::char_traits<char>_> *)(param_1 + 3));
std::basic_iostream<char,std::char_traits<char>_>::~basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)(param_1 + 4));
/* WARNING: Could not recover jumptable at 0x0001800042f8. Too many branches */
/* WARNING: Treating indirect jump as call */
std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(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<char,std::char_traits<char>_> *pbVar2;
basic_ostream<char,struct_std::char_traits<char>_> *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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_b0);
local_198 = 1;
std::basic_iostream<char,std::char_traits<char>_>::basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)local_148,
(basic_streambuf<char,std::char_traits<char>_> *)&local_130);
*(undefined ***)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4)) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) =
*(int *)(local_148[0] + 4) + -0x98;
std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
((basic_streambuf<char,std::char_traits<char>_> *)&local_130);
local_130 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
local_c8 = 0;
local_c0 = 0;
pbVar2 = FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)&local_138,"IO Exception: ")
;
FUN_180006310(pbVar2,param_4);
pbVar2 = FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)&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<char,std::char_traits<char>_>::operator<<
(pbVar2,*(int *)(param_1 + 7));
FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)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<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)local_148 + (longlong)*(int *)(local_148[0] + 4) + -4) =
*(int *)(local_148[0] + 4) + -0x98;
FUN_180005f90((basic_streambuf<char,std::char_traits<char>_> *)&local_130);
std::basic_iostream<char,std::char_traits<char>_>::~basic_iostream<char,std::char_traits<char>_>
(local_128);
std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>(local_a0);
local_178 = 1;
std::basic_iostream<char,std::char_traits<char>_>::basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)local_138,
(basic_streambuf<char,std::char_traits<char>_> *)&local_120);
*(undefined ***)((longlong)local_138 + (longlong)*(int *)(local_138[0] + 4)) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) =
*(int *)(local_138[0] + 4) + -0x98;
std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
((basic_streambuf<char,std::char_traits<char>_> *)&local_120);
local_120 = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::vftable;
local_b8 = 0;
local_b0 = 0;
pbVar2 = FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)&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<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)&iStack_13c + (longlong)*(int *)(local_138[0] + 4)) =
*(int *)(local_138[0] + 4) + -0x98;
FUN_180005f90((basic_streambuf<char,std::char_traits<char>_> *)&local_120);
std::basic_iostream<char,std::char_traits<char>_>::~basic_iostream<char,std::char_traits<char>_>
(local_118);
std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>
(local_80);
uVar8 = 0;
std::basic_iostream<char,std::char_traits<char>_>::
basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)local_118,
(basic_streambuf<char,std::char_traits<char>_> *)local_100);
*(undefined ***)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4)) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)((longlong)local_118 + (longlong)*(int *)(local_118[0] + 4) + -4) =
*(int *)(local_118[0] + 4) + -0x98;
std::basic_streambuf<char,std::char_traits<char>_>::
basic_streambuf<char,std::char_traits<char>_>
((basic_streambuf<char,std::char_traits<char>_> *)local_100);
local_100[0] = std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::
vftable;
local_98 = 0;
local_90 = 0;
if (DVar1 == 2) {
plVar3 = FUN_1800059c0(param_1,local_208,uVar8);
pbVar4 = FUN_180006310((basic_ostream<char,std::char_traits<char>_> *)&local_108,
"Specified port, ");
pbVar4 = (basic_ostream<char,std::char_traits<char>_> *)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<char,std::char_traits<char>_> *)&local_108,
"Unknown error opening the serial port: ");
std::basic_ostream<char,std::char_traits<char>_>::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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> local_118 [16];
basic_ostream<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> local_118 [16];
basic_ostream<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::_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<char,std::char_traits<char>_>::_Pninc(param_1);
*pcVar3 = (char)param_2;
return param_2;
}
==================================================================
### EXPORT FUNC 180005f90 (182 bytes) name=FUN_180005f90
void FUN_180005f90(basic_streambuf<char,std::char_traits<char>_> *param_1)
{
void *pvVar1;
void *_Memory;
longlong lVar2;
*(undefined ***)param_1 =
std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::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<char,std::char_traits<char>_>::~basic_streambuf<char,std::char_traits<char>_>
(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<char,std::char_traits<char>_> *
FUN_1800060f0(basic_iostream<char,std::char_traits<char>_> *param_1)
{
basic_streambuf<char,std::char_traits<char>_> *this;
*(undefined **)param_1 = &DAT_18000fcb8;
*(undefined **)(param_1 + 0x10) = &DAT_18000fba8;
std::basic_ios<char,std::char_traits<char>_>::basic_ios<char,std::char_traits<char>_>
((basic_ios<char,std::char_traits<char>_> *)(param_1 + 0x98));
this = (basic_streambuf<char,std::char_traits<char>_> *)(param_1 + 0x18);
std::basic_iostream<char,std::char_traits<char>_>::basic_iostream<char,std::char_traits<char>_>
(param_1,this);
*(undefined ***)(param_1 + *(int *)(*(longlong *)param_1 + 4)) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)(param_1 + (longlong)*(int *)(*(longlong *)param_1 + 4) + -4) =
*(int *)(*(longlong *)param_1 + 4) + -0x98;
std::basic_streambuf<char,std::char_traits<char>_>::basic_streambuf<char,std::char_traits<char>_>
(this);
*(undefined ***)this =
std::basic_stringbuf<char,std::char_traits<char>,std::allocator<char>_>::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<char,std::char_traits<char>_> *
FUN_1800061c0(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> *
FUN_180006200(basic_ios<char,std::char_traits<char>_> *param_1,uint param_2)
{
*(undefined ***)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98) =
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>_>::vftable;
*(int *)(param_1 + (longlong)*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x9c) =
*(int *)(*(longlong *)(param_1 + -0x98) + 4) + -0x98;
FUN_180005f90((basic_streambuf<char,std::char_traits<char>_> *)(param_1 + -0x80));
std::basic_iostream<char,std::char_traits<char>_>::~basic_iostream<char,std::char_traits<char>_>
((basic_iostream<char,std::char_traits<char>_> *)(param_1 + -0x78));
std::basic_ios<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>(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<char,std::char_traits<char>_>::_Osfx
((basic_ostream<char,std::char_traits<char>_> *)*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<char,std::char_traits<char>_> *
FUN_180006310(basic_ostream<char,std::char_traits<char>_> *param_1,char *param_2)
{
longlong *plVar1;
basic_ostream<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> **)
(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50);
if ((this == (basic_ostream<char,std::char_traits<char>_> *)0x0) || (this == param_1)) {
bVar2 = true;
}
else {
std::basic_ostream<char,std::char_traits<char>_>::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<char,std::char_traits<char>_>::sputc
(*(basic_streambuf<char,std::char_traits<char>_> **)
(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<char,std::char_traits<char>_>::sputn
(*(basic_streambuf<char,std::char_traits<char>_> **)
(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x48),param_2,lVar8);
if (_Var4 == lVar8) {
for (; 0 < lVar7; lVar7 = lVar7 + -1) {
iVar3 = std::basic_streambuf<char,std::char_traits<char>_>::sputc
(*(basic_streambuf<char,std::char_traits<char>_> **)
(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<char,std::char_traits<char>_>::setstate
((basic_ios<char,std::char_traits<char>_> *)
(param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false);
bVar2 = std::uncaught_exception();
if (!bVar2) {
std::basic_ostream<char,std::char_traits<char>_>::_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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> *
FUN_180006920(basic_ostream<char,std::char_traits<char>_> *param_1,char *param_2,ulonglong param_3)
{
longlong *plVar1;
basic_ostream<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> **)
(param_1 + (longlong)*(int *)(lVar5 + 4) + 0x50);
if ((this == (basic_ostream<char,std::char_traits<char>_> *)0x0) || (this == param_1)) {
bVar2 = true;
}
else {
std::basic_ostream<char,std::char_traits<char>_>::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<char,std::char_traits<char>_>::sputc
(*(basic_streambuf<char,std::char_traits<char>_> **)
(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<char,std::char_traits<char>_>::sputn
(*(basic_streambuf<char,std::char_traits<char>_> **)
(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<char,std::char_traits<char>_>::sputc
(*(basic_streambuf<char,std::char_traits<char>_> **)
(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<char,std::char_traits<char>_>::setstate
((basic_ios<char,std::char_traits<char>_> *)
(param_1 + *(int *)(*(longlong *)param_1 + 4)),iVar6,false);
bVar2 = std::uncaught_exception();
if (!bVar2) {
std::basic_ostream<char,std::char_traits<char>_>::_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<char,std::char_traits<char>_> *)(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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> local_118 [16];
basic_ostream<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::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<char,std::char_traits<char>_> *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<char,std::char_traits<char>_> local_528 [16];
basic_ostream<char,std::char_traits<char>_> 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<char,std::char_traits<char>_>::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<CHN*___ptr64,std::allocator<CHN*___ptr64>_>
/* Library Function - Multiple Matches With Different Base Names
public: __cdecl std::priority_queue<unsigned __int64,class std::vector<unsigned __int64,struct
std::_Parallelism_allocator<unsigned __int64> >,struct std::greater<void>
>::~priority_queue<unsigned __int64,class std::vector<unsigned __int64,struct
std::_Parallelism_allocator<unsigned __int64> >,struct std::greater<void> >(void) __ptr64
public: __cdecl std::vector<struct CHN * __ptr64,class std::allocator<struct CHN * __ptr64>
>::~vector<struct CHN * __ptr64,class std::allocator<struct CHN * __ptr64> >(void) __ptr64
public: __cdecl std::vector<unsigned __int64,struct std::_Parallelism_allocator<unsigned
__int64> >::~vector<unsigned __int64,struct std::_Parallelism_allocator<unsigned __int64> >(void)
__ptr64
public: __cdecl std::vector<unsigned __int64,class std::allocator<unsigned __int64>
>::~vector<unsigned __int64,class std::allocator<unsigned __int64> >(void) __ptr64
7 names - too many to list
Library: Visual Studio 2019 Release */
void FID_conflict__vector<CHN*___ptr64,std::allocator<CHN*___ptr64>_>(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<char,std::char_traits<char>_>::_Lock
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::_Unlock
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::showmanyc
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::uflow
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::xsgetn
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::xsputn
(basic_streambuf<char,std::char_traits<char>_> *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<char,struct_std::char_traits<char>_> * __thiscall
std::basic_streambuf<char,std::char_traits<char>_>::setbuf
(basic_streambuf<char,std::char_traits<char>_> *this,char *param_1,__int64 param_2)
{
basic_streambuf<char,struct_std::char_traits<char>_> *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<char,std::char_traits<char>_>::sync
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::imbue
(basic_streambuf<char,std::char_traits<char>_> *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<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
((basic_ios<char,std::char_traits<char>_> *)(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<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
((basic_ios<char,std::char_traits<char>_> *)(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<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
((basic_ios<char,std::char_traits<char>_> *)(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<char,std::char_traits<char>_>::~basic_ios<char,std::char_traits<char>_>
((basic_ios<char,std::char_traits<char>_> *)(*(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<char,std::char_traits<char>_>::setstate
((basic_ios<char,std::char_traits<char>_> *)
((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;
}
==================================================================