# Lmx.dll selected decompile ## FUN_10114a90 at 10114a90 Signature: `undefined FUN_10114a90(void)` ```c void __thiscall FUN_10114a90(undefined4 *param_1,int param_2,int *param_3,ushort param_4,undefined4 param_5, void *param_6,short *param_7) { char cVar1; uint uVar2; undefined4 uVar3; basic_ostream_> *pbVar4; int iVar5; undefined4 *puVar6; wchar_t *pwVar7; wchar_t *pwVar8; size_t _MaxCount; DWORD DVar9; int iVar10; int *piVar11; undefined2 uVar12; wchar_t _Ch; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var13; undefined4 uVar14; undefined1 local_ba4 [20]; undefined1 local_b90 [20]; undefined4 local_b7c; undefined4 local_b74; void *local_b70; short *local_b6c; undefined4 *local_b68; int *local_b64; char local_b5e; char local_b5d; undefined4 *local_b5c [391]; wchar_t local_540 [520]; undefined1 local_130 [20]; undefined1 local_11c [20]; undefined1 local_108 [60]; undefined1 local_cc [20]; undefined4 local_b8 [36]; undefined4 local_28; undefined4 local_24; undefined4 local_20; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_101729a5; local_10 = ExceptionList; uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_b5c[0] = (undefined4 *)(uint)param_4; local_b74 = param_5; local_b70 = param_6; local_b6c = param_7; local_14 = uVar2; cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { local_20 = *(undefined4 *)(local_b6c + 2); swprintf_s(local_540,0x104,L"", (int)(short)*(undefined4 *)local_b6c,local_20,*(undefined4 *)(local_b6c + 4), (int)local_b6c[6]); local_b64 = (int *)FUN_10004010(local_b74,local_b70); local_b5c[0] = (undefined4 *)FUN_100040a0(local_b5c[0]); uVar3 = FUN_100300d0(param_3); iVar5 = param_2; p_Var13 = endl_exref; pbVar4 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::OnSetAttributeResult - ENTER correlationId ",param_2, L" pValue ",uVar3,L" quality ",local_b5c[0],L" timestamp ",local_b64, L" mxStatus ",local_540); pbVar4 = std::basic_ostream_>::operator<< (pbVar4,iVar5); uVar3 = FUN_1001a0e0(pbVar4); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var13); } if (param_2 == 0) { if (*local_b6c == -1) { iVar5 = (**(code **)(*param_3 + 0x60))(param_3,&local_b68); iVar5 = FUN_10048e60(iVar5 == 0,iVar5,300,"preboundreference.cpp"); if (iVar5 == 0) goto LAB_1011543c; if (local_b68 != (undefined4 *)0x0) { local_b64 = (int *)0x0; local_8 = 1; uVar12 = 0x1011; iVar5 = (**(code **)(*param_3 + 0x80))(param_3,&local_b64); if (iVar5 == 0) { FUN_1008e710(local_b64); local_8._0_1_ = 2; FUN_10112f20(local_b90); local_8._0_1_ = 1; FUN_10021cc0(); FUN_1005f730(&local_28); uVar3 = CONCAT22(uVar12,(undefined2)local_20); cVar1 = FUN_100057b0(local_28,local_24,uVar3,0x138,"preboundreference.cpp"); uVar12 = (undefined2)((uint)uVar3 >> 0x10); if (cVar1 != '\0') { FUN_1004c220(); local_8._0_1_ = 3; FUN_1004c320(param_1[0x14]); local_b5c[0] = local_b8; uVar12 = 0x1011; FUN_10073b80(local_b5c,0); iVar5 = FUN_1005f730(local_130); FUN_10040470(*(undefined2 *)(iVar5 + 2)); local_8._0_1_ = 1; FUN_1002e080(); } cVar1 = FUN_100057b0(local_28,local_24,CONCAT22(uVar12,(undefined2)local_20),0x144, "preboundreference.cpp"); if (cVar1 == '\0') { param_1[0x2a] = 4; } else { iVar5 = FUN_1005f730(local_11c); if (*(short *)(iVar5 + 10) == 0) { FUN_101131d0(); } else { param_1[0x2a] = 3; param_1[0x29] = 0; FUN_10114620(); } } } local_8 = 0xffffffff; if (local_b64 != (int *)0x0) { (**(code **)(*local_b64 + 8))(local_b64); } goto LAB_1011543c; } } else if (((DAT_101d8c40 == 2) && (param_1[0x29] == 0)) && (*(ushort *)(param_1[0x19] + 0x2ac) - 0x7c17 < 0x3e9)) { cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { uVar3 = FUN_10003fc0(*(undefined4 *)local_b6c,*(undefined4 *)(local_b6c + 2), *(undefined4 *)(local_b6c + 4),*(undefined4 *)(local_b6c + 6)); p_Var13 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c), L"PreboundReference - attempting local platform <",param_1 + 6, L"> - status ",uVar3); uVar3 = FUN_1001dec0(uVar3); uVar3 = FUN_1001a0e0(uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var13); } param_1[5] = param_1[5] + 1; param_1[0x2a] = 1; param_1[0x29] = 1; FUN_10112cd0(); goto LAB_1011543c; } LAB_10115432: param_1[0x2a] = 4; goto LAB_1011543c; } if (param_2 != 1) goto LAB_1011543c; param_1[0x2a] = 6; if (*local_b6c != -1) { if (*(char *)(param_1 + 0x1b) != '\0') { if ((uint)param_1[0x21] < 8) { puVar6 = param_1 + 0x1c; } else { puVar6 = (undefined4 *)param_1[0x1c]; } iVar5 = (**(code **)(*(int *)param_1[0x14] + 0x44))((int *)param_1[0x14],puVar6); if (iVar5 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar5,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75); } *(undefined1 *)(param_1 + 0x1b) = 0; } if (*(int *)(local_b6c + 2) == 3) { LAB_1011502e: param_1[0x2a] = 6; goto LAB_1011543c; } if ((*(int *)(local_b6c + 2) == 4) && (local_b6c[6] == 0x1f42)) { local_b70 = operator_new(8); local_8 = 0xb; if (local_b70 == (void *)0x0) { local_b5c[0] = (undefined4 *)0x0; } else { local_b5c[0] = (undefined4 *)FUN_10112b50(param_1); } local_8 = 0xffffffff; cVar1 = FUN_10048d60(local_b5c[0] != (undefined4 *)0x0,0x23b,"preboundreference.cpp"); if (cVar1 != '\0') { uVar3 = FUN_10016fd0(); FUN_1005f7e0(uVar3); FUN_1004c220(); local_8 = 0xc; FUN_1004c320(param_1[0x14]); local_b68 = local_b8; FUN_10073b80(&local_b68,0); param_1[5] = param_1[5] + 1; param_1[0x2a] = 1; DVar9 = GetTickCount(); FUN_1008f150(local_b5c[0],0,0,0,0,*(undefined4 *)local_b6c,*(undefined4 *)(local_b6c + 2), *(undefined4 *)(local_b6c + 4),*(undefined4 *)(local_b6c + 6),0,DVar9); local_8 = 0xffffffff; FUN_1002e080(); } goto LAB_1011543c; } goto LAB_10115432; } iVar5 = (**(code **)(*param_3 + 0x60))(param_3,&local_b68); iVar5 = FUN_10048e60(iVar5 == 0,iVar5,0x19d,"preboundreference.cpp"); if (iVar5 == 0) goto LAB_1011543c; if (local_b68 == (undefined4 *)0x0) goto LAB_1011502e; local_b64 = (int *)0x0; local_8 = 6; uVar12 = 0x1011; iVar5 = (**(code **)(*param_3 + 0x80))(param_3,&local_b64); if (iVar5 == 0) { FUN_1008e710(local_b64); local_8._0_1_ = 7; FUN_10112f20(local_ba4); local_8 = CONCAT31(local_8._1_3_,6); FUN_10021cc0(); if (*(char *)(param_1 + 0x1b) != '\0') { piVar11 = param_1 + 0x1c; if (7 < (uint)param_1[0x21]) { piVar11 = (int *)*piVar11; } FUN_1005f700(piVar11); *(undefined1 *)(param_1 + 0x1b) = 0; } iVar5 = FUN_1005f730(local_108); if (*(short *)(iVar5 + 10) == 0) { local_b5d = '\0'; local_b5e = '\0'; puVar6 = (undefined4 *)FUN_1005f730(local_cc); cVar1 = FUN_100057b0(*puVar6,puVar6[1],CONCAT22(uVar12,*(undefined2 *)(puVar6 + 2)),0x1c1, "preboundreference.cpp"); if (cVar1 == '\0') { if (*(char *)(param_1 + 4) != '\0') { FUN_1004c220(); local_8._0_1_ = 8; FUN_1004c320(param_1[0x14]); local_b5c[0] = local_b8; FUN_10073b80(local_b5c,0); local_8 = CONCAT31(local_8._1_3_,6); FUN_1002e080(); } local_b5e = '\x01'; } else { pwVar7 = (wchar_t *)FUN_1005f590(); cVar1 = FUN_10134a10(pwVar7); if (cVar1 == '\0') { pwVar8 = wcschr(pwVar7,L'.'); if ((pwVar8 != (wchar_t *)0x0) && (_MaxCount = (int)pwVar8 - (int)pwVar7 >> 1, _MaxCount != 0)) { pwVar8 = (wchar_t *)FUN_1005f610(); iVar5 = _wcsnicmp(pwVar7,pwVar8,_MaxCount); if (iVar5 == 0) { _Ch = L'.'; pwVar7 = (wchar_t *)FUN_1005f660(); pwVar7 = wcschr(pwVar7,_Ch); if (pwVar7 == (wchar_t *)0x0) goto LAB_10114e2f; } local_b5d = '\x01'; } } } LAB_10114e2f: if ((*(char *)(param_1 + 4) == '\0') || ((local_b5d == '\0' && (local_b5e == '\0')))) { param_1[0x2a] = 4; } else { local_b70 = operator_new(8); local_8._0_1_ = 9; if (local_b70 == (void *)0x0) { local_b5c[0] = (undefined4 *)0x0; } else { local_b5c[0] = (undefined4 *)FUN_10112b50(param_1); } local_8 = CONCAT31(local_8._1_3_,6); cVar1 = FUN_10048d60(local_b5c[0] != (undefined4 *)0x0,0x1ee,"preboundreference.cpp"); if (cVar1 == '\0') { param_1[0x2a] = 4; iVar5 = FUN_10022ff0(); if (*(int *)(iVar5 + 0xac) == 0) { iVar10 = FUN_1002f080(); if (iVar10 != 0) goto LAB_10114f66; uVar3 = 0; } else { LAB_10114f66: uVar3 = *(undefined4 *)(iVar5 + 0xac); } uVar14 = 0; FUN_10022ff0(uVar3,0); cVar1 = FUN_10022ba0(uVar3,uVar14); if (cVar1 != '\0') { uVar3 = FUN_1005f590(); uVar3 = FUN_10022ff0(L"PreboundReference::OnSetAttributeResult unable to crreate CPreboundReferenceAdapter for ref %s" ,uVar3); FUN_10022cb0(uVar3); } } else { *(undefined1 *)(param_1 + 4) = 0; uVar3 = FUN_10016fd0(); FUN_1005f7e0(uVar3); FUN_1008fc40(&DAT_1017a514); FUN_1008fc70(&DAT_1017a514); param_1[5] = param_1[5] + 1; param_1[0x2a] = 1; DVar9 = GetTickCount(); local_b70 = (void *)CONCAT22(local_b70._2_2_,0x1f42); local_b7c = (uint)local_b7c._2_2_ << 0x10; FUN_1008f150(local_b5c[0],0,0,0,0,local_b7c,4,0,local_b70,0,DVar9); } } } else { param_1[0x2a] = 3; param_1[0x29] = 0; FUN_10114620(); } } local_8 = 0xffffffff; if (local_b64 != (int *)0x0) { (**(code **)(*local_b64 + 8))(local_b64); } LAB_1011543c: if (*(char *)(param_1 + 0x1b) != '\0') { if ((uint)param_1[0x21] < 8) { puVar6 = param_1 + 0x1c; } else { puVar6 = (undefined4 *)param_1[0x1c]; } iVar5 = (**(code **)(*(int *)param_1[0x14] + 0x44))((int *)param_1[0x14],puVar6); if (iVar5 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar5,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75); } *(undefined1 *)(param_1 + 0x1b) = 0; } if ((param_1[0x2a] != 1) && (param_1[0x2a] != 2)) { FUN_10050df0(local_b6c,param_1); } piVar11 = param_1 + 5; *piVar11 = *piVar11 + -1; if (*piVar11 == 0) { (**(code **)*param_1)(1); } local_b5c[0] = (undefined4 *)param_1[0x2a]; if (param_1[5] == 1) { local_b68 = param_1; piVar11 = (int *)FUN_100484c0(&local_b70,&local_b68); iVar5 = *piVar11; cVar1 = FUN_10048d60(iVar5 != *(int *)(param_1[0x19] + 0x180),0x273,"preboundreference.cpp"); if (cVar1 != '\0') { FUN_100382e0(&local_b70,iVar5); piVar11 = param_1 + 5; *piVar11 = *piVar11 + -1; if (*piVar11 == 0) { (**(code **)*param_1)(1); } } } cVar1 = FUN_100408d0(); if (cVar1 != '\0') { uVar3 = FUN_10001e20(local_b5c); p_Var13 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::OnSetAttributeResult - EXIT status ",uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var13); } ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_100dc750 at 100dc750 Signature: `undefined FUN_100dc750(void)` ```c void __thiscall FUN_100dc750(int *param_1,uint param_2,int param_3,int param_4,BSTR param_5) { char cVar1; uint uVar2; undefined4 uVar3; basic_ostream_> *pbVar4; undefined4 *puVar5; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var6; uint local_23c; int *local_234; BSTR local_230; uint local_22c; int local_228; int local_224; BSTR local_220; wchar_t local_21c [260]; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_1016d12b; local_10 = ExceptionList; uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_14 = uVar2; cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { local_23c._0_2_ = (short)param_2; swprintf_s(local_21c,0x104,L"", (int)(short)local_23c,param_3,param_4,(int)(short)param_5); p_Var6 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"DemandReadCallback::CancelWithStatus - status ",local_21c); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var6); } if (((param_3 == 5) && (param_4 == 0)) && ((short)param_5 == 1)) { local_23c = param_2 & 0xffff0000; local_230 = (BSTR)CONCAT22(local_230._2_2_,5); local_228 = 3; local_22c = local_23c; local_224 = 2; local_220 = local_230; } else { local_22c = param_2; local_228 = param_3; local_224 = param_4; local_220 = param_5; } cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { swprintf_s(local_21c,0x104,L"", (int)(short)local_22c,local_228,local_224,(int)(short)local_220); p_Var6 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"DemandReadCallback::CancelWithStatus - Calling OnGetAttributeResult with status " ,local_21c); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var6); } puVar5 = (undefined4 *)FUN_10005170(); local_8 = 0; (**(code **)(*param_1 + 4))(*puVar5,0,DAT_101d6504,DAT_101d6508,&local_22c); local_8 = 0xffffffff; if (local_234 != (int *)0x0) { (**(code **)(*local_234 + 8))(local_234); } SysFreeString(local_230); ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ```