# LmxProxy.dll selected decompile ## 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_10013d9c at 10013d9c Signature: `undefined __stdcall FUN_10013d9c(int param_1, int param_2, int * param_3, undefined4 param_4)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_10013d9c(int param_1,int param_2,int *param_3,undefined4 param_4) { basic_ostream_> bVar1; basic_ostream_> *pbVar2; int *piVar3; 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; piVar3 = param_3; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),L"CLMXProxyServer::Suspend - Server Handle " ); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; pbVar2 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar2,pwVar5); pbVar2 = std::basic_ostream_>::operator<< (pbVar2,(long)piVar3); std::basic_ostream_>::operator<<(pbVar2,p_Var6); } local_18 = FUN_1000fb02((void *)(param_1 + -8),param_2,(int)param_3,(int *)¶m_3,&local_1c); if (-1 < local_18) { FUN_1000de6d(¶m_3,(undefined4 *)param_3[5]); local_8 = CONCAT31(local_8._1_3_,2); if (param_3 == (int *)0x0) { pwVar5 = L"CLMXProxyServer::Suspend - Query for IMxScanOnDemand failed"; piVar3 = (int *)FUN_10003248(); FUN_1000308b(piVar3,pwVar5); } else { local_18 = (**(code **)(*param_3 + 0xc)) (param_3,*(undefined4 *)(local_1c + 8),*(undefined4 *)(local_1c + 0x14), param_4); } local_8 = CONCAT31((int3)(local_8 >> 8),1); if (param_3 != (int *)0x0) { (**(code **)(*param_3 + 8))(param_3); } } 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::Suspend - 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_10013f49(); return; } ``` ## FUN_10014028 at 10014028 Signature: `undefined __stdcall FUN_10014028(int param_1, int param_2, int * param_3, undefined4 param_4)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_10014028(int param_1,int param_2,int *param_3,undefined4 param_4) { basic_ostream_> bVar1; basic_ostream_> *pbVar2; int *piVar3; 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; piVar3 = param_3; p_Var6 = endl_exref; pbVar2 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::Activate - Server Handle "); pbVar2 = std::basic_ostream_>::operator<<(pbVar2,iVar4) ; pbVar2 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar2,pwVar5); pbVar2 = std::basic_ostream_>::operator<< (pbVar2,(long)piVar3); std::basic_ostream_>::operator<<(pbVar2,p_Var6); } local_18 = FUN_1000fb02((void *)(param_1 + -8),param_2,(int)param_3,(int *)¶m_3,&local_1c); if (-1 < local_18) { FUN_1000de6d(¶m_3,(undefined4 *)param_3[5]); local_8 = CONCAT31(local_8._1_3_,2); if (param_3 == (int *)0x0) { pwVar5 = L"CLMXProxyServer::Activate - Query for IMxScanOnDemand failed"; piVar3 = (int *)FUN_10003248(); FUN_1000308b(piVar3,pwVar5); } else { local_18 = (**(code **)(*param_3 + 0x10)) (param_3,*(undefined4 *)(local_1c + 8),*(undefined4 *)(local_1c + 0x14), param_4); } local_8 = CONCAT31((int3)(local_8 >> 8),1); if (param_3 != (int *)0x0) { (**(code **)(*param_3 + 8))(param_3); } } 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::Activate - 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_100141d5(); return; } ``` ## FUN_10011f9e at 10011f9e Signature: `undefined __stdcall FUN_10011f9e(int * param_1, int * param_2, OLECHAR * param_3, undefined4 param_4, int * param_5)` ```c /* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */ void FUN_10011f9e(int *param_1,int *param_2,OLECHAR *param_3,undefined4 param_4,int *param_5) { char cVar1; basic_ostream_> bVar2; undefined1 uVar3; undefined *puVar4; int iVar5; int *piVar6; basic_ostream_> *pbVar7; CComBSTR *pCVar8; undefined4 *puVar9; int *piVar10; HRESULT HVar11; uint uVar12; OLECHAR *pOVar13; undefined4 uVar14; wchar_t *pwVar15; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var16; undefined1 local_70 [4]; undefined4 local_6c [7]; undefined4 local_50 [7]; undefined4 local_34 [5]; undefined4 local_20; HRESULT local_1c; _func_void_uint__EXCEPTION_POINTERS_ptr *local_18 [4]; uint local_8; undefined4 uStack_4; uStack_4 = 0x60; local_8 = 0; FUN_10011b07(local_18); piVar10 = param_1; local_8 = CONCAT31(local_8._1_3_,1); cVar1 = FUN_1000d2d6((int)(param_1 + -2)); 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((int)(piVar10 + -2)); pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem2 - 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]); FUN_1001236d(); return; } bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (param_3 == (OLECHAR *)0x0) { if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item name NULL - returning E_INVALIDARG HRESULT"; piVar10 = param_2; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem2 - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,(long)piVar10); 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]); FUN_1001236d(); return; } if (param_5 == (int *)0x0) { if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item handle is NULL - returning E_POINTER HRESULT"; piVar10 = param_2; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem2 - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,(long)piVar10); 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]); FUN_1001236d(); return; } if (bVar2 != (basic_ostream_>)0x0) { pwVar15 = L" Item name: "; piVar6 = param_2; pOVar13 = param_3; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem2 - Server Handle: "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,(long)piVar6); piVar6 = (int *)FUN_10002dbf((int *)pbVar7,pwVar15); pbVar7 = (basic_ostream_> *) FUN_10002dbf(piVar6,pOVar13); std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_20 = 0; piVar6 = (int *)FUN_1000f663(piVar10 + 9,¶m_1,(int *)¶m_2); iVar5 = *piVar6; if (iVar5 == piVar10[10]) { local_1c = -0x7ff8ffa9; } else { param_2 = (int *)0x0; local_8._1_3_ = (undefined3)(local_8 >> 8); local_8._0_1_ = 3; local_1c = CoCreateInstance((IID *)&DAT_1001e860,(LPUNKNOWN)0x0,0x17,(IID *)&DAT_1001cf8c, ¶m_2); if (-1 < local_1c) { FUN_1000ddf7(¶m_1,param_2); local_8._0_1_ = 4; (**(code **)(*param_2 + 0x24))(param_2,param_3); (**(code **)(*param_2 + 0x44))(param_2,param_4); local_1c = (**(code **)(**(int **)(iVar5 + 0x28) + 0x14)) (*(int **)(iVar5 + 0x28),param_2,&local_20); if (local_1c == 0) { piVar10 = (int *)(iVar5 + 0x14); *piVar10 = *piVar10 + 1; *param_5 = *piVar10; pCVar8 = FUN_1000dcbb(local_50,param_3,local_20); local_8._0_1_ = 5; puVar9 = FUN_1000f743(local_70,piVar10,pCVar8); local_8._0_1_ = 6; cVar1 = '\0'; piVar10 = (int *)FUN_1000ffa9((void *)(iVar5 + 0x3c),puVar9); FUN_100104d1((void *)(iVar5 + 0x3c),local_34,piVar10,cVar1); local_8._0_1_ = 5; FUN_1000d2ee(local_6c); local_8._0_1_ = 4; FUN_1000d2ee(local_50); } local_8._0_1_ = 3; if (param_1 != (int *)0x0) { (**(code **)(*param_1 + 8))(param_1); } } local_8 = CONCAT31(local_8._1_3_,1); if (param_2 != (int *)0x0) { (**(code **)(*param_2 + 8))(param_2); } } bVar2 = FUN_10003f01(*(basic_ostream_> **) (DAT_100294e0 + 0xc)); if (bVar2 != (basic_ostream_>)0x0) { iVar5 = *param_5; pwVar15 = L" Item Handle: "; HVar11 = local_1c; p_Var16 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc), L"CLMXProxyServer::AddItem2 - returning HRESULT "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,HVar11); pbVar7 = (basic_ostream_> *) FUN_10002dbf((int *)pbVar7,pwVar15); pbVar7 = std::basic_ostream_>::operator<<(pbVar7,iVar5) ; std::basic_ostream_>::operator<<(pbVar7,p_Var16); } local_8 = local_8 & 0xffffff00; _set_se_translator(local_18[0]); FUN_1001236d(); return; } ``` ## FUN_1001150e at 1001150e Signature: `undefined __thiscall FUN_1001150e(void * this, undefined4 param_1, int * param_2, undefined1 * param_3)` ```c /* WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3 */ /* WARNING: Removing unreachable block (ram,0x100117e5) */ /* WARNING: Removing unreachable block (ram,0x10011809) */ void __thiscall FUN_1001150e(void *this,undefined4 param_1,int *param_2,undefined1 *param_3) { bool bVar1; undefined *puVar2; int iVar3; int *piVar4; HRESULT HVar5; size_t sVar6; BSTR *ppOVar7; code *pcVar8; undefined1 auStack_4c8 [20]; undefined4 uStack_4b4; uint uVar9; wchar_t *pwVar10; undefined4 uVar11; BSTR local_474; undefined1 *local_470; int *local_46c; undefined4 local_468; HMODULE local_464; FARPROC local_460; HANDLE local_45c; int local_458; BSTR local_454; uint local_450; LPCWSTR local_44c; BSTR local_448; undefined4 local_444 [7]; WCHAR local_428 [528]; int local_8; undefined4 uStack_4; uStack_4 = 0x470; local_8 = 0x1001151d; local_468 = param_1; local_46c = param_2; local_450 = 0; *param_3 = 0; local_470 = param_3; bVar1 = FUN_1000dbd4(*(LPCWSTR *)this); if (!bVar1) { uVar11 = 0; uVar9 = 1; puVar2 = FUN_10003248(); iVar3 = FUN_10003897(puVar2,uVar9); puVar2 = FUN_10003248(); uVar9 = FUN_1000305b(puVar2,iVar3,uVar11); if ((char)uVar9 != '\0') { pwVar10 = L"Can not create dump under MinidumpDirectory %s."; piVar4 = (int *)FUN_10003248(); FUN_100030ef(piVar4,pwVar10); } goto LAB_10011990; } local_458 = 0; local_8._0_1_ = 0; local_8._1_3_ = 0; memset(local_428,0,0x412); GetModuleFileNameW((HMODULE)0x0,local_428,0x208); pwVar10 = wcsrchr(local_428,L'\\'); if (pwVar10 + 1 == (OLECHAR *)0x0) { local_448 = (BSTR)0x0; LAB_100115d9: local_8._0_1_ = 1; ATL::CComBSTR::CComBSTR((CComBSTR *)&local_44c,this); local_8._0_1_ = 2; FUN_1000dd27(&local_44c,L"\\"); HVar5 = FUN_1000ca95(&local_44c,local_448); if (HVar5 < 0) goto LAB_1001162b; FUN_1000dd27(&local_44c,L"*.dmp"); local_45c = (HANDLE)FUN_1000d165(local_44c); local_454 = (BSTR)FUN_1000e389(); if ((int)local_45c < (int)local_454) { LAB_10011719: local_454 = (BSTR)0x0; local_464 = FUN_1000d084(5,L"dbghelp.dll",'\0',(DWORD *)&local_454); if (local_464 == (HMODULE)0x0) { uVar11 = 0; uVar9 = 1; puVar2 = FUN_10003248(); iVar3 = FUN_10003897(puVar2,uVar9); puVar2 = FUN_10003248(); uVar9 = FUN_1000305b(puVar2,iVar3,uVar11); pcVar8 = SysFreeString_exref; if ((char)uVar9 != '\0') { pwVar10 = L"Failed to load dbghelp.dll to generate minidump. Error code : %d"; piVar4 = (int *)FUN_10003248(); FUN_100030ef(piVar4,pwVar10); pcVar8 = SysFreeString_exref; } } else { local_460 = GetProcAddress(local_464,"MiniDumpWriteDump"); FUN_1000e3b2(this,local_448,&local_458); if (local_458 == 0) { local_454 = SysAllocString(L""); if (local_454 == (BSTR)0x0) goto LAB_10011626; ppOVar7 = &local_454; local_8 = 7; local_450 = 2; } else { ppOVar7 = (BSTR *)ATL::CComBSTR::CComBSTR((CComBSTR *)&local_474,(CComBSTR *)&local_458); local_8 = CONCAT31(local_8._1_3_,6); local_450 = 1; } local_45c = CreateFileW(*ppOVar7,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,(HANDLE)0x0) ; pcVar8 = SysFreeString_exref; local_8 = 6; if ((local_450 & 2) != 0) { local_450 = local_450 & 0xfffffffd; SysFreeString(local_454); } local_8 = 2; if ((local_450 & 1) != 0) { local_450 = local_450 & 0xfffffffe; SysFreeString(local_474); } GetCurrentThreadId(); FUN_1000e34e(); GetCurrentProcessId(); GetCurrentProcess(); (*local_460)(); CloseHandle(local_45c); FreeLibrary(local_464); iVar3 = local_458; *local_470 = 1; local_458 = 0; *local_46c = iVar3; } } else { uVar9 = FUN_1000e323(); if ((char)uVar9 == '\0') { uVar11 = 0; uVar9 = 1; puVar2 = FUN_10003248(); iVar3 = FUN_10003897(puVar2,uVar9); puVar2 = FUN_10003248(); uVar9 = FUN_1000305b(puVar2,iVar3,uVar11); pcVar8 = SysFreeString_exref; if ((char)uVar9 != '\0') { pwVar10 = L"Too many dump files have been generated for %s. Maximum allowed per process is %d"; piVar4 = (int *)FUN_10003248(); FUN_100030ef(piVar4,pwVar10); pcVar8 = SysFreeString_exref; } } else { FUN_100042e8(local_444,local_448); local_8._0_1_ = 3; sVar6 = wcslen(L"*.dmp"); FUN_1000f52e(local_444,L"*.dmp",sVar6); local_464 = (HMODULE)&stack0xfffffb54; uStack_4b4 = 0x100116bd; basic_string<>(&stack0xfffffb54,local_444); local_8._0_1_ = 4; local_460 = (FARPROC)auStack_4c8; FUN_100042e8(auStack_4c8,*(wchar_t **)this); local_8._0_1_ = 3; iVar3 = FUN_10010e85(); if (iVar3 != 0) { local_8._0_1_ = 2; FID_conflict__Tidy(local_444,'\x01',0); goto LAB_10011719; } local_8._0_1_ = 2; FID_conflict__Tidy(local_444,'\x01',0); pcVar8 = SysFreeString_exref; } } local_8._0_1_ = 1; (*pcVar8)(); local_8 = (uint)local_8._1_3_ << 8; (*pcVar8)(); local_8 = 0xffffffff; (*pcVar8)(); LAB_10011990: FUN_10017473(); return; } local_448 = SysAllocString(pwVar10 + 1); if (local_448 != (BSTR)0x0) goto LAB_100115d9; LAB_10011626: HVar5 = -0x7ff8fff2; LAB_1001162b: /* WARNING: Subroutine does not return */ FUN_1000134e(HVar5); } ``` ## Catch@1001288b at 1001288b Signature: `undefined * __stdcall Catch@1001288b(void)` ```c undefined * Catch_1001288b(void) { int iVar1; void *pvVar2; undefined4 uVar3; int unaff_EBP; iVar1 = *(int *)(unaff_EBP + -0x28); FUN_100109cb((void *)(unaff_EBP + 0x10),iVar1,"LMXProxyServer.cpp",0x262); *(undefined1 *)(unaff_EBP + -4) = 4; FUN_100038ee(*(uint *)(iVar1 + 4)); *(undefined1 *)(unaff_EBP + -4) = 2; if (*(undefined4 **)(unaff_EBP + 0x10) != (undefined4 *)0x0) { FUN_100038c3(*(undefined4 **)(unaff_EBP + 0x10)); *(undefined4 *)(unaff_EBP + 0x10) = 0; } pvVar2 = FUN_1000f7d7((void *)(unaff_EBP + -0x44),iVar1); *(undefined1 *)(unaff_EBP + -4) = 5; uVar3 = FUN_1000328b((int)pvVar2); *(undefined4 *)(unaff_EBP + 0x10) = uVar3; *(undefined1 *)(unaff_EBP + -4) = 2; FUN_1000425c((undefined4 *)(unaff_EBP + -0x44)); *(undefined4 *)(unaff_EBP + -4) = 0xffffffff; return &DAT_10012902; } ``` ## Catch@10012ac5 at 10012ac5 Signature: `undefined * __stdcall Catch@10012ac5(void)` ```c undefined * Catch_10012ac5(void) { uint uVar1; undefined4 uVar2; int unaff_EBP; FUN_10010994((void *)(unaff_EBP + 0x10),*(void **)(unaff_EBP + -0x18),"LMXProxyServer.cpp",0x294); *(undefined1 *)(unaff_EBP + -4) = 4; uVar1 = FUN_1000328b(*(int *)(unaff_EBP + -0x18)); FUN_100038ee(uVar1); *(undefined1 *)(unaff_EBP + -4) = 3; if (*(undefined4 **)(unaff_EBP + 0x10) != (undefined4 *)0x0) { FUN_100038c3(*(undefined4 **)(unaff_EBP + 0x10)); *(undefined4 *)(unaff_EBP + 0x10) = 0; } uVar2 = FUN_1000328b(*(int *)(unaff_EBP + -0x18)); *(undefined4 *)(unaff_EBP + 0x10) = uVar2; *(undefined4 *)(unaff_EBP + -4) = 0xffffffff; return &DAT_10012b29; } ```