# LmxProxy.dll selected decompile ## FUN_10011b71 at 10011b71 Signature: `int __stdcall FUN_10011b71(int param_1, int param_2, OLECHAR * param_3, int * param_4)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ /* WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3 */ int FUN_10011b71(int param_1,int param_2,OLECHAR *param_3,int *param_4) { char cVar1; basic_ostream_> bVar2; undefined1 uVar3; undefined *puVar4; int iVar5; int *piVar6; basic_ostream_> *pbVar7; int *piVar8; CComBSTR *pCVar9; undefined4 *puVar10; int iVar11; uint uVar12; OLECHAR *pOVar13; undefined4 uVar14; wchar_t *pwVar15; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var16; undefined1 local_6c [4]; undefined4 local_68 [7]; undefined4 local_4c [7]; undefined4 local_30 [5]; undefined4 local_1c; _func_void_uint__EXCEPTION_POINTERS_ptr *local_18 [4]; uint local_8; undefined4 uStack_4; uStack_4 = 0x5c; local_8 = 0; FUN_10011b07(local_18); iVar11 = param_1; local_8 = CONCAT31(local_8._1_3_,1); cVar1 = FUN_1000d2d6(param_1 + -8); piVar6 = param_4; if (cVar1 == '\0') { uVar14 = 0; uVar12 = 1; puVar4 = FUN_10003248(); iVar5 = FUN_10003897(puVar4,uVar12); puVar4 = FUN_10003248(); uVar12 = FUN_1000305b(puVar4,iVar5,uVar14); if ((char)uVar12 != '\0') { pwVar15 = L"Failed to retrieve information from the MXAccess_Runtime license. Either MXAccess_Runtime license is not available or expired." ; piVar6 = (int *)FUN_10003248(); FUN_100030ef(piVar6,pwVar15); } bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" No Valid License found - returning E_ACCESSDENIED HRESULT"; p_Var16 = endl_exref; uVar3 = FUN_1000d2d6(iVar11 + -8); pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem - Valid License: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,(bool)uVar3); pbVar7 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar7,pwVar15); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_18[0]); param_2 = -0x7ff8fffb; } else if (param_3 == (OLECHAR *)0x0) { bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item name NULL - returning E_INVALIDARG HRESULT"; iVar11 = param_2; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,iVar11); pbVar7 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar7,pwVar15); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_18[0]); param_2 = -0x7ff8ffa9; } else { bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (piVar6 == (int *)0x0) { if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item handle is NULL - returning E_POINTER HRESULT"; iVar11 = param_2; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,iVar11); pbVar7 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar7,pwVar15); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_18[0]); param_2 = -0x7fffbffd; } else { if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item name: "; iVar5 = param_2; pOVar13 = param_3; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,iVar5); piVar8 = (int *)FUN_10002dbf((int *)pbVar7,pwVar15); pbVar7 = (basic_ostream_> *) FUN_10002dbf(piVar8,pOVar13); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_1c = 0; piVar8 = (int *)FUN_1000f663((void *)(iVar11 + 0x24),¶m_1,¶m_2); iVar5 = *piVar8; if (iVar5 == *(int *)(iVar11 + 0x28)) { param_2 = -0x7ff8ffa9; } else { param_2 = (**(code **)(**(int **)(iVar5 + 0x28) + 0xc)) (*(int **)(iVar5 + 0x28),param_3,&local_1c); if (param_2 == 0) { piVar8 = (int *)(iVar5 + 0x14); *piVar8 = *piVar8 + 1; *piVar6 = *piVar8; pCVar9 = FUN_1000dcbb(local_4c,param_3,local_1c); local_8._0_1_ = 2; puVar10 = FUN_1000f743(local_6c,piVar8,pCVar9); local_8._0_1_ = 3; cVar1 = '\0'; piVar8 = (int *)FUN_1000ffa9((void *)(iVar5 + 0x3c),puVar10); FUN_100104d1((void *)(iVar5 + 0x3c),local_30,piVar8,cVar1); local_8._0_1_ = 2; FUN_1000d2ee(local_68); local_8 = CONCAT31(local_8._1_3_,1); FUN_1000d2ee(local_4c); } } bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { iVar11 = *piVar6; pwVar15 = L" Item Handle: "; iVar5 = param_2; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem - returning HRESULT "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,iVar5); pbVar7 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar7,pwVar15); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,iVar11); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_18[0]); } } return param_2; } ``` ## FUN_10012693 at 10012693 Signature: `undefined __stdcall FUN_10012693(int param_1, int param_2, int param_3)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_10012693(int param_1,int param_2,int param_3) { basic_ostream_> bVar1; basic_ostream_> *pbVar2; int iVar3; void *this; int iVar4; wchar_t *pwVar5; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var6; _func_void_uint__EXCEPTION_POINTERS_ptr *local_24 [2]; int local_1c; int local_18; uint local_8; undefined4 uStack_4; uStack_4 = 0x38; local_8 = 0; FUN_10011b07(local_24); local_8 = CONCAT31(local_8._1_3_,1); local_18 = 0; local_1c = 0; bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { pwVar5 = L" Item Handle "; iVar4 = param_2; iVar3 = param_3; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),L"CLMXProxyServer::Advise - Server Handle ") ; pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; pbVar2 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar2,pwVar5); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar3) ; std::basic_ostream_>::operator<<(pbVar2,p_Var6); } this = (void *)(param_1 + -8); local_18 = FUN_1000fa3b(this,param_2,param_3,¶m_1,&local_1c); iVar4 = local_1c; if (-1 < local_18) { if (*(char *)(local_1c + 0x1c) == '\0') { local_18 = FUN_1000f9b6(this,param_2,param_3,local_1c + 0x20,local_1c + 0x24); iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x253,"LMXProxyServer.cpp"); if (iVar3 != 0) { local_18 = (**(code **)(**(int **)(param_1 + 0x14) + 0x20)) (*(int **)(param_1 + 0x14),*(undefined4 *)(iVar4 + 0x14), *(undefined4 *)(iVar4 + 0x20),param_3,iVar4 + 0x18); iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x256,"LMXProxyServer.cpp" ); if (iVar3 != 0) { *(undefined1 *)(iVar4 + 0x1c) = 1; } } } else { local_18 = -0x7ff8ffa9; } } bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { iVar4 = local_18; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::Advise - returning HRESULT "); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; std::basic_ostream_>::operator<<(pbVar2,p_Var6); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_24[0]); FUN_1001286e(); return; } ``` ## FUN_100142b4 at 100142b4 Signature: `undefined __stdcall FUN_100142b4(int param_1, int param_2, int param_3)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_100142b4(int param_1,int param_2,int param_3) { basic_ostream_> bVar1; basic_ostream_> *pbVar2; int iVar3; void *this; int iVar4; wchar_t *pwVar5; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var6; _func_void_uint__EXCEPTION_POINTERS_ptr *local_24 [2]; int local_1c; int local_18; uint local_8; undefined4 uStack_4; uStack_4 = 0x38; local_8 = 0; FUN_10011b07(local_24); local_8 = CONCAT31(local_8._1_3_,1); local_18 = 0; local_1c = 0; bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { pwVar5 = L" Item Handle "; iVar4 = param_2; iVar3 = param_3; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AdviseSupervisory - Server Handle "); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; pbVar2 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar2,pwVar5); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar3) ; std::basic_ostream_>::operator<<(pbVar2,p_Var6); } this = (void *)(param_1 + -8); local_18 = FUN_1000fa3b(this,param_2,param_3,¶m_1,&local_1c); iVar4 = local_1c; if (-1 < local_18) { if (*(char *)(local_1c + 0x1c) == '\0') { local_18 = FUN_1000f9b6(this,param_2,param_3,local_1c + 0x20,local_1c + 0x24); iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x4d9,"LMXProxyServer.cpp"); if (iVar3 != 0) { local_18 = (**(code **)(**(int **)(param_1 + 0x24) + 0xc)) (*(int **)(param_1 + 0x24),*(undefined4 *)(iVar4 + 0x14),0xffffffff, *(undefined4 *)(iVar4 + 0x20),0,iVar4 + 0x18); iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x4dc,"LMXProxyServer.cpp" ); if (iVar3 != 0) { *(undefined1 *)(iVar4 + 0x1c) = 1; *(undefined1 *)(iVar4 + 0x1f) = 1; } } } else { local_18 = -0x7ff8ffa9; } } bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { iVar4 = local_18; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AdviseSupervisory - returning HRESULT "); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; std::basic_ostream_>::operator<<(pbVar2,p_Var6); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_24[0]); FUN_10014493(); return; } ``` ## FUN_1001244d at 1001244d Signature: `undefined __stdcall FUN_1001244d(int param_1, int param_2, int param_3)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_1001244d(int param_1,int param_2,int param_3) { int *piVar1; basic_ostream_> bVar2; basic_ostream_> *pbVar3; int iVar4; int iVar5; wchar_t *pwVar6; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var7; _func_void_uint__EXCEPTION_POINTERS_ptr *local_20 [2]; int *local_18 [4]; uint local_8; undefined4 uStack_4; uStack_4 = 0x34; local_8 = 0; FUN_10011b07(local_20); local_8 = CONCAT31(local_8._1_3_,1); local_18[0] = (int *)0x0; bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { pwVar6 = L" Item Handle "; iVar5 = param_2; iVar4 = param_3; p_Var7 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::RemoveItem - Server Handle "); pbVar3 = std::basic_ostream_>::operator<<(pbVar3,iVar5) ; pbVar3 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar3,pwVar6); pbVar3 = std::basic_ostream_>::operator<<(pbVar3,iVar4) ; std::basic_ostream_>::operator<<(pbVar3,p_Var7); } iVar4 = FUN_1000fa3b((void *)(param_1 + -8),param_2,param_3,¶m_3,(int *)local_18); piVar1 = local_18[0]; iVar5 = param_3; if (-1 < iVar4) { FUN_1000d5d5(local_18[0] + 4,param_3); FUN_10010202((void *)(iVar5 + 0x2c),¶m_3,piVar1); iVar4 = 0; } bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { p_Var7 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::RemoveItem - returning HRESULT "); pbVar3 = std::basic_ostream_>::operator<<(pbVar3,iVar4) ; std::basic_ostream_>::operator<<(pbVar3,p_Var7); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_20[0]); FUN_100125b4(); return; } ``` ## FUN_1001294d at 1001294d Signature: `undefined __stdcall FUN_1001294d(int param_1, LPCRITICAL_SECTION param_2, int param_3)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_1001294d(int param_1,LPCRITICAL_SECTION param_2,int param_3) { basic_ostream_> bVar1; bool bVar2; basic_ostream_> *pbVar3; int iVar4; int *piVar5; LPCRITICAL_SECTION p_Var6; wchar_t *pwVar7; int iVar8; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var9; _func_void_uint__EXCEPTION_POINTERS_ptr *local_24; int *local_20; int local_18 [4]; uint local_8; undefined4 uStack_4; uStack_4 = 0x38; local_8 = 0; FUN_10011b07(&local_24); local_8 = CONCAT31(local_8._1_3_,1); local_18[0] = 0; bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { pwVar7 = L" Item Handle "; p_Var6 = param_2; iVar8 = param_3; p_Var9 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::UnAdvise - Server Handle "); pbVar3 = std::basic_ostream_>::operator<< (pbVar3,(long)p_Var6); pbVar3 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar3,pwVar7); pbVar3 = std::basic_ostream_>::operator<<(pbVar3,iVar8) ; std::basic_ostream_>::operator<<(pbVar3,p_Var9); } iVar4 = FUN_1000fb02((void *)(param_1 + -8),(int)param_2,param_3,¶m_3,local_18); iVar8 = local_18[0]; if (-1 < iVar4) { if (*(char *)(local_18[0] + 0xf) == '\0') { piVar5 = *(int **)(param_3 + 0x14); } else { piVar5 = *(int **)(param_3 + 0x20); } param_3 = (**(code **)(*piVar5 + 0x10))(piVar5,*(undefined4 *)(local_18[0] + 8)); *(undefined1 *)(iVar8 + 0xc) = 0; *(undefined1 *)(iVar8 + 0xf) = 0; *(undefined4 *)(iVar8 + 8) = 0; param_2 = (LPCRITICAL_SECTION)&DAT_100295bc; EnterCriticalSection((LPCRITICAL_SECTION)&DAT_100295bc); local_8 = CONCAT31(local_8._1_3_,2); for (piVar5 = (int *)*DAT_100295b0; local_20 = piVar5, piVar5 != DAT_100295b0; piVar5 = (int *)*piVar5) { bVar2 = FUN_10008d10(piVar5 + 3,*(undefined4 **)(iVar8 + 0x10)); if (bVar2) { FUN_1000fdf8(&DAT_100295b0,¶m_1,piVar5); break; } } local_8 = CONCAT31(local_8._1_3_,1); LeaveCriticalSection(param_2); FUN_1000cbb3((int *)(iVar8 + 0x10)); FUN_1000cbb3((int *)(iVar8 + 0x14)); iVar4 = param_3; } bVar1 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar1 != (basic_ostream_>)0x0) { p_Var9 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::UnAdvise - returning HRESULT "); pbVar3 = std::basic_ostream_>::operator<<(pbVar3,iVar4) ; std::basic_ostream_>::operator<<(pbVar3,p_Var9); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_24); FUN_10012b2c(); return; } ```