# Lmx.dll selected decompile ## FUN_101139c0 at 101139c0 Signature: `undefined FUN_101139c0(void)` ```c undefined4 * __thiscall FUN_101139c0(undefined4 *param_1,short *param_2,undefined4 param_3) { short sVar1; uint uVar2; short *psVar3; void *local_10; undefined1 *puStack_c; undefined4 local_8; puStack_c = &LAB_101726b3; local_10 = ExceptionList; uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; *param_1 = MxConnectionCallback::vftable; local_8 = 0; param_1[1] = CReferenceToResolve::vftable; *(undefined1 *)(param_1 + 2) = 0; param_1[3] = RedundancyResolutionStatusCallback::vftable; *param_1 = PreboundReference::vftable; param_1[1] = PreboundReference::vftable; param_1[3] = PreboundReference::vftable; *(undefined1 *)(param_1 + 4) = 0; param_1[5] = 0; param_1[0xb] = 7; param_1[10] = 0; *(undefined2 *)(param_1 + 6) = 0; psVar3 = param_2; do { sVar1 = *psVar3; psVar3 = psVar3 + 1; } while (sVar1 != 0); FUN_100363d0(param_2,(int)psVar3 - (int)(param_2 + 1) >> 1); local_8._1_3_ = (undefined3)((uint)local_8 >> 8); param_1[0x12] = 7; param_1[0x11] = 0; *(undefined2 *)(param_1 + 0xd) = 0; local_8._0_1_ = 2; FUN_10113900(param_2); param_1[0x19] = param_3; param_1[0x1a] = 0; *(undefined1 *)(param_1 + 0x1b) = 0; param_1[0x21] = 7; param_1[0x20] = 0; *(undefined2 *)(param_1 + 0x1c) = 0; param_1[0x27] = 0; param_1[0x2a] = 0; param_1[0x2b] = 0; local_8 = CONCAT31(local_8._1_3_,8); *(undefined1 *)(param_1 + 0x2c) = 0; param_1[0x29] = 0; if (DAT_101d8c40 == 0) { FUN_10113070(uVar2); } FUN_101133d0(); (**(code **)(*(int *)param_1[0x19] + 4))((int *)param_1[0x19]); ExceptionList = local_10; return param_1; } ``` ## FUN_10113130 at 10113130 Signature: `undefined FUN_10113130(void)` ```c void FUN_10113130(void) { int iVar1; short *psVar2; undefined1 local_24 [4]; undefined1 local_20 [4]; undefined1 local_1c [20]; uint local_8; local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; iVar1 = FUN_1005f730(local_1c); if (*(short *)(iVar1 + 2) != 0) { iVar1 = FUN_1005f730(local_1c); if (*(short *)(iVar1 + 4) != 0) { iVar1 = FUN_1005f730(local_1c); if (*(short *)(iVar1 + 4) == 1) { __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc); return; } } } psVar2 = (short *)FUN_1005f880(local_24); if (*psVar2 != 0) { iVar1 = FUN_1005f880(local_20); if (*(short *)(iVar1 + 2) != 0) { __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc); return; } } __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_101131d0 at 101131d0 Signature: `undefined FUN_101131d0(void)` ```c void __fastcall FUN_101131d0(int param_1) { byte bVar1; undefined4 uVar2; undefined4 *puVar3; int *local_58; BSTR local_54; undefined1 local_50 [20]; undefined4 local_3c; undefined4 local_38; undefined4 local_34; undefined4 local_30; undefined4 local_2c; undefined1 local_28; undefined1 uStack_27; undefined2 uStack_26; undefined2 uStack_24; undefined2 uStack_22; undefined2 uStack_20; undefined4 local_1e; undefined2 local_1a; undefined4 local_18; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_10172568; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; uStack_26 = 0; uStack_24 = 0; uStack_22 = 0; uStack_20 = 0; local_18 = 0; local_28 = 0; local_1e = 0x710065; local_1a = 10; puVar3 = (undefined4 *)FUN_1005f730(local_50); uVar2 = *puVar3; local_28 = (undefined1)uVar2; uStack_27 = (undefined1)((uint)uVar2 >> 8); uStack_26 = (undefined2)((uint)uVar2 >> 0x10); uStack_24 = (undefined2)puVar3[1]; *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1; uStack_22 = 1; uStack_20 = 0; *(undefined4 *)(param_1 + 0xa8) = 2; puVar3 = (undefined4 *)FUN_1005f730(local_50); local_3c = *puVar3; local_38 = puVar3[1]; local_30 = puVar3[3]; bVar1 = *(byte *)(param_1 + 0x10); local_2c = puVar3[4]; local_34 = CONCAT22(((ushort)bVar1 - (ushort)bVar1) - (ushort)(bVar1 != 0),(short)puVar3[2]); FUN_1005f7e0(&local_3c); puVar3 = (undefined4 *)FUN_100054b0(*(undefined4 *)(param_1 + 0x50)); local_8 = 0; FUN_1006e2a0(0,&local_28,0,1,2,*puVar3,param_1,0,0,0,0,1,0,0,0,0,0,1,0,0); local_8 = 0xffffffff; if (local_58 != (int *)0x0) { (**(code **)(*local_58 + 8))(local_58); } SysFreeString(local_54); local_34 = local_34 & 0xffff; FUN_1005f7e0(&local_3c); ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_10114620 at 10114620 Signature: `undefined FUN_10114620(void)` ```c void __fastcall FUN_10114620(int param_1) { char cVar1; undefined4 uVar2; undefined4 uVar3; undefined1 local_18 [4]; void *local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_10172866; local_10 = ExceptionList; ExceptionList = &local_10; if (*(char *)(*(int *)(param_1 + 100) + 0x6dc) != '\0') { cVar1 = FUN_1005faf0(DAT_101d60b8 ^ (uint)&stack0xfffffffc); if (cVar1 == '\0') { local_14 = operator_new(0x1c); local_8 = 0; if (local_14 == (void *)0x0) { local_14 = (void *)0x0; } else { local_14 = (void *)FUN_10060b80(); } local_8 = 0xffffffff; FUN_1003ec10(*(undefined4 *)(param_1 + 0x50)); uVar3 = 0; uVar2 = FUN_1002c750(&local_14); FUN_10066e70(local_18,uVar2,uVar3); local_14 = operator_new(0x1c); local_8 = 1; if (local_14 == (void *)0x0) { local_14 = (void *)0x0; } else { local_14 = (void *)FUN_10060b80(); } local_8 = 0xffffffff; FUN_1003ec10(*(undefined4 *)(param_1 + 0x50)); uVar3 = 0; uVar2 = FUN_1002c750(&local_14); FUN_10066e70(local_18,uVar2,uVar3); *(undefined1 *)(*(int *)(param_1 + 100) + 0x6dd) = 1; } } ExceptionList = local_10; return; } ``` ## FUN_10089cb0 at 10089cb0 Signature: `undefined FUN_10089cb0(void)` ```c void __thiscall FUN_10089cb0(int param_1,short *param_2,undefined4 *param_3,undefined4 *param_4,undefined1 *param_5, undefined4 param_6,undefined4 param_7,undefined4 *param_8,char param_9) { short sVar1; short *psVar2; wchar_t *pwVar3; short ****ppppsVar4; wchar_t *pwVar5; int iVar6; wchar_t **ppwVar7; int iVar8; short ****ppppsVar9; short *psVar10; undefined4 uVar11; wchar_t *pwVar12; wchar_t *local_bc; undefined1 *local_b8; undefined4 local_b4; undefined4 *local_b0; short *local_ac; uint local_a8; uint local_a4; wchar_t local_a0; undefined4 *local_9c; wchar_t *local_98; undefined4 local_94; int local_90; wchar_t *local_8c; undefined1 local_85; undefined1 local_84 [28]; undefined2 local_68; undefined4 local_58; undefined4 local_54; void *local_4c [4]; short **local_3c; uint local_38; short ***local_30 [4]; short **local_20; short **local_1c; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_10166bc7; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_9c = param_3; local_b4 = param_6; local_b8 = param_5; local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000); local_94 = param_7; local_ac = param_2; local_b0 = param_8; local_85 = 0; local_1c = (short **)0x7; local_20 = (short **)0x0; psVar2 = param_2; do { sVar1 = *psVar2; psVar2 = psVar2 + 1; } while (sVar1 != 0); FUN_100363d0(param_2,(int)psVar2 - (int)(param_2 + 1) >> 1); local_54 = 7; local_58 = 0; local_68 = 0; local_8._0_1_ = 1; local_8._1_3_ = 0; if (*(char *)(param_1 + 0x41) == '\0') { local_90 = param_1 + 0x44; LAB_10089db7: ppppsVar9 = (short ****)local_30[0]; if (local_1c < (short ***)0x8) { ppppsVar9 = local_30; } pwVar3 = operator_new(0x20); local_8c = pwVar3; if (pwVar3 == (wchar_t *)0x0) { pwVar3 = (wchar_t *)0x0; } else { pwVar3[10] = L'\a'; pwVar3[0xb] = L'\0'; pwVar3[8] = L'\0'; pwVar3[9] = L'\0'; *pwVar3 = L'\0'; pwVar3[0xe] = L'\x01'; pwVar3[0xf] = L'\0'; } local_8._0_1_ = 1; local_98 = pwVar3; ppppsVar4 = ppppsVar9; do { sVar1 = *(short *)ppppsVar4; ppppsVar4 = (short ****)((int)ppppsVar4 + 2); } while (sVar1 != 0); FUN_100363d0(ppppsVar9,(int)ppppsVar4 - (int)((int)ppppsVar9 + 2) >> 1); iVar8 = local_90; local_8 = CONCAT31(local_8._1_3_,4); local_8c = (wchar_t *)FUN_10026930(&local_98); if (local_8c == *(wchar_t **)(iVar8 + 4)) { LAB_10089e7c: local_bc = *(wchar_t **)(iVar8 + 4); ppwVar7 = &local_bc; } else { pwVar5 = *(wchar_t **)(local_8c + 6); if (7 < *(uint *)(pwVar5 + 10)) { pwVar5 = *(wchar_t **)pwVar5; } pwVar12 = pwVar3; if (7 < *(uint *)(pwVar3 + 10)) { pwVar12 = *(wchar_t **)pwVar3; } iVar6 = _wcsicmp(pwVar12,pwVar5); if (iVar6 < 0) goto LAB_10089e7c; ppwVar7 = &local_8c; } pwVar5 = *ppwVar7; local_8._0_1_ = 1; if (pwVar3 != (wchar_t *)0x0) { pwVar12 = pwVar3 + 0xe; *(int *)pwVar12 = *(int *)pwVar12 + -1; if (*(int *)pwVar12 == 0) { local_8._0_1_ = 1; local_8c = pwVar3; if (7 < *(uint *)(pwVar3 + 10)) { operator_delete(*(void **)pwVar3); } pwVar3[10] = L'\a'; pwVar3[0xb] = L'\0'; pwVar3[8] = L'\0'; pwVar3[9] = L'\0'; *pwVar3 = L'\0'; operator_delete(pwVar3); } local_98 = (wchar_t *)0x0; } if (pwVar5 == *(wchar_t **)(param_1 + 0x48)) { local_8c = (wchar_t *)0x2e; iVar8 = FUN_10011180(&local_8c,0xffffffff,1); if (iVar8 == -1) goto LAB_1008a0f4; ppppsVar9 = (short ****)FUN_10043140(local_4c,0,iVar8); local_8._0_1_ = 8; if (local_30 != ppppsVar9) { if ((short ***)0x7 < local_1c) { operator_delete(local_30[0]); } local_1c = (short **)0x7; local_20 = (short **)0x0; local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000); if (ppppsVar9[5] < (short ***)0x8) { memmove(local_30,ppppsVar9,((int)ppppsVar9[4] + 1) * 2); } else { local_30[0] = *ppppsVar9; *ppppsVar9 = (short ***)0x0; } local_20 = (short **)ppppsVar9[4]; local_1c = (short **)ppppsVar9[5]; ppppsVar9[5] = (short ***)0x7; ppppsVar9[4] = (short ***)0x0; *(undefined2 *)ppppsVar9 = 0; } local_8._0_1_ = 1; if (7 < local_38) { operator_delete(local_4c[0]); } local_38 = 7; local_3c = (short **)0x0; local_4c[0] = (void *)((uint)local_4c[0] & 0xffff0000); goto LAB_10089db7; } local_a8 = *(uint *)(pwVar5 + 10); local_a4 = *(uint *)(pwVar5 + 0xc); local_a0 = pwVar5[0xe]; if (((((char)local_a8 == '\0') || (local_a8 >> 0x10 == 0)) || ((short)local_a4 == 0)) || (local_a4 >> 0x10 == 0)) { if (param_9 != '\0') { FUN_10068510(&local_94,pwVar5); } local_85 = 0; } else { FUN_10049320(local_ac); local_8._0_1_ = 6; psVar2 = *(short **)(pwVar5 + 8); psVar10 = psVar2; do { sVar1 = *psVar10; psVar10 = psVar10 + 1; } while (sVar1 != 0); FUN_100363d0(psVar2,(int)psVar10 - (int)(psVar2 + 1) >> 1); *local_9c = *(undefined4 *)(pwVar5 + 10); local_9c[1] = *(undefined4 *)(pwVar5 + 0xc); *(wchar_t *)(local_9c + 2) = pwVar5[0xe]; *param_4 = *(undefined4 *)(pwVar5 + 0xf); *local_b8 = (char)pwVar5[0x11]; *local_b0 = *(undefined4 *)(pwVar5 + 0x14); local_b0[1] = *(undefined4 *)(pwVar5 + 0x16); if (local_20 != local_3c) { uVar11 = FUN_10043140(local_84,(int)local_20 + 1,0xffffffff); local_8._0_1_ = 7; FUN_10049600(uVar11); local_8._0_1_ = 6; FUN_10024360(); } local_85 = 1; local_8 = CONCAT31(local_8._1_3_,1); if (7 < local_38) { operator_delete(local_4c[0]); } local_38 = 7; local_3c = (short **)0x0; local_4c[0] = (void *)((uint)local_4c[0] & 0xffff0000); } LAB_1008a0f4: local_54 = 7; local_58 = 0; local_68 = 0; local_8 = 0xffffffff; if ((short ***)0x7 < local_1c) { operator_delete(local_30[0]); } } else { local_54 = 7; local_58 = 0; local_68 = 0; local_8 = 0xffffffff; if ((short ***)0x7 < local_1c) { operator_delete(local_30[0]); } } local_30[0] = (short ***)((uint)local_30[0] & 0xffff0000); local_20 = (short **)0x0; local_1c = (short **)0x7; ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_1008f150 at 1008f150 Signature: `undefined FUN_1008f150(void)` ```c void __thiscall FUN_1008f150(int param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5, undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9, undefined4 param_10,undefined4 param_11) { int iVar1; char cVar2; undefined4 uVar3; undefined4 uVar4; basic_ostream_> *pbVar5; int iVar6; int *piVar7; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var8; int *local_258; undefined4 local_254; ulong local_250; ushort local_24c; ushort uStack_24a; uchar local_248 [4]; uchar local_244 [4]; undefined4 local_240; undefined4 local_23c; undefined4 local_238; undefined4 local_234; undefined4 local_230; undefined4 local_22c; undefined4 local_228; undefined4 local_224; GUID local_220 [33]; uint local_8; local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; CoCreateGuid(local_220); cVar2 = FUN_100408d0(); if (cVar2 != '\0') { uVar3 = FUN_10047fe0(local_220[0].Data1,local_220[0]._4_4_,local_220[0].Data4._0_4_, local_220[0].Data4._4_4_); p_Var8 = endl_exref; uVar4 = (**(code **)(*param_2 + 8))(); piVar7 = param_2; pbVar5 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38), L"CReferenceStringResolver::ResolveReference - reference ",param_2, L" guid ",uVar3,L" ref ",uVar4); pbVar5 = std::basic_ostream_>::operator<< (pbVar5,piVar7); uVar3 = FUN_1001a0e0(pbVar5); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); pbVar5 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar5,p_Var8); } local_250 = local_220[0].Data1; local_24c = local_220[0].Data2; uStack_24a = local_220[0].Data3; local_244[0] = local_220[0].Data4[4]; local_244[1] = local_220[0].Data4[5]; local_244[2] = local_220[0].Data4[6]; local_244[3] = local_220[0].Data4[7]; local_254 = param_11; local_240 = param_7; local_238 = param_9; local_248[0] = local_220[0].Data4[0]; local_248[1] = local_220[0].Data4[1]; local_248[2] = local_220[0].Data4[2]; local_248[3] = local_220[0].Data4[3]; local_234 = param_10; local_258 = param_2; iVar1 = *(int *)(param_1 + 0x24); local_22c = param_4; local_23c = param_8; local_228 = param_5; local_230 = param_3; local_224 = param_6; iVar6 = FUN_1008e910(iVar1,*(undefined4 *)(iVar1 + 4),&local_258); if (*(int *)(param_1 + 0x28) == 0x4924923) { /* WARNING: Subroutine does not return */ std::_Xlength_error("list too long"); } *(int *)(param_1 + 0x28) = *(int *)(param_1 + 0x28) + 1; *(int *)(iVar1 + 4) = iVar6; **(int **)(iVar6 + 4) = iVar6; __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_1008f8b0 at 1008f8b0 Signature: `undefined FUN_1008f8b0(void)` ```c void __thiscall FUN_1008f8b0(void *param_1,undefined4 *param_2,undefined4 param_3,uint param_4,undefined4 param_5, undefined4 param_6,undefined4 param_7,uint param_8) { undefined2 uVar1; uint uVar2; char cVar3; ushort uVar4; uint uVar5; uint uVar6; uint uVar7; undefined4 uVar8; undefined4 uVar9; basic_ostream_> *pbVar10; bool bVar11; wchar_t *pwVar12; wchar_t *pwVar13; wchar_t *pwVar14; undefined *puVar15; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var16; ushort local_fc8; short sStack_fc6; undefined2 uStack_fc4; undefined4 local_fc0; undefined4 local_fbc; uVar5 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; local_fbc = param_4; uVar2 = local_fbc; local_fc8 = (ushort)param_8; sStack_fc6 = (short)(param_8 >> 0x10); uVar4 = (ushort)((uint)param_3 >> 0x10); if ((((uVar4 != 0) && (local_fbc._0_2_ = (short)param_4, (short)local_fbc != 0)) && (uVar4 != *(ushort *)((int)param_1 + 0x2ae))) && ((local_fc8 == *(ushort *)((int)param_1 + 0x2ae) && (sStack_fc6 == *(short *)((int)param_1 + 0x2ac))))) { uVar6 = FUN_1008f0f0(); uVar7 = FUN_1008f120(); if ((uVar4 == uVar7) && (((param_4 & 0xffff) == uVar6 || (uVar6 == 0xffffffff)))) { uVar1 = *(undefined2 *)((int)param_1 + 0x2ae); local_fc0 = CONCAT22(uVar1,(short)param_3); bVar11 = (short)local_fbc != 1; local_fbc = uVar2; if (bVar11) { local_fbc = CONCAT22((short)(param_4 >> 0x10),*(undefined2 *)((int)param_1 + 0x2ac)); } cVar3 = FUN_100408d0(); param_3 = local_fc0; uVar2 = local_fbc; if (cVar3 != '\0') { uVar8 = FUN_10022ff0(L"AccessManager::FixUpMxHandle - object partner redirected to " ,uVar4,param_4 & 0xffff,param_8 & 0xffff,sStack_fc6,uVar1, local_fbc & 0xffff); FUN_10022d50(uVar8); } } } local_fbc = uVar2; cVar3 = FUN_100408d0(); if (cVar3 != '\0') { uVar9 = FUN_100041f0(param_3,local_fbc,param_5,param_6,param_7); uVar8 = CONCAT22(uStack_fc4,sStack_fc6); puVar15 = &DAT_1017ef50; pwVar14 = L" engine "; pwVar13 = L" partner_>:: operator<<(*(basic_ostream_> ** )(DAT_101d6474 + 0x38),param_1); uVar8 = FUN_1001a0e0(pbVar10,pwVar12,uVar9,pwVar13,param_8,pwVar14,uVar8,puVar15); uVar8 = FUN_1001a0e0(uVar8); FUN_1001a0e0(uVar8); uVar8 = FUN_10022870(); FUN_1001a0e0(uVar8); uVar8 = FUN_10022870(); pbVar10 = (basic_ostream_> *) FUN_1001a0e0(uVar8); std::basic_ostream_>::operator<< (pbVar10,p_Var16); } *param_2 = param_3; param_2[1] = local_fbc; param_2[2] = param_5; param_2[3] = param_6; param_2[4] = param_7; __security_check_cookie(uVar5 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_10112a00 at 10112a00 Signature: `undefined FUN_10112a00(void)` ```c undefined4 * __thiscall FUN_10112a00(undefined4 *param_1,LPCSTR param_2) { uint uVar1; int cchWideChar; int iVar2; BSTR lpWideCharStr; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_101723b8; local_10 = ExceptionList; uVar1 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; SysFreeString((BSTR)*param_1); lpWideCharStr = (BSTR)0x0; if (param_2 != (LPCSTR)0x0) { local_8 = 0; cchWideChar = MultiByteToWideChar(3,0,param_2,-1,(LPWSTR)0x0,0); lpWideCharStr = SysAllocStringLen((OLECHAR *)0x0,cchWideChar - 1); if ((lpWideCharStr == (BSTR)0x0) || (iVar2 = MultiByteToWideChar(3,0,param_2,-1,lpWideCharStr,cchWideChar), iVar2 == cchWideChar) ) { local_8 = 0xffffffff; FUN_10006040(uVar1); } else { SysFreeString(lpWideCharStr); local_8 = 0xffffffff; FUN_10006040(); lpWideCharStr = (BSTR)0x0; } } *param_1 = lpWideCharStr; if ((lpWideCharStr == (BSTR)0x0) && (param_2 != (LPCSTR)0x0)) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } ExceptionList = local_10; return param_1; } ``` ## FUN_10112cd0 at 10112cd0 Signature: `undefined FUN_10112cd0(void)` ```c void __fastcall FUN_10112cd0(int param_1) { uint uVar1; void *pvVar2; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_1017247b; local_10 = ExceptionList; uVar1 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; pvVar2 = operator_new(0x38); local_8 = 0; if (pvVar2 != (void *)0x0) { FUN_1009f240(*(undefined4 *)(param_1 + 0x50),*(undefined2 *)(*(int *)(param_1 + 100) + 0x2ac), param_1,*(int *)(param_1 + 100)); } local_8 = 0xffffffff; (*(code *)**(undefined4 **)(param_1 + 4))(uVar1); ExceptionList = local_10; return; } ``` ## FUN_10112f20 at 10112f20 Signature: `undefined FUN_10112f20(void)` ```c int * __thiscall FUN_10112f20(int *param_1,int *param_2) { UINT UVar1; BSTR pOVar2; if (*param_1 != *param_2) { AtlComPtrAssign(param_1,*param_2); } if ((BSTR)param_1[1] != (BSTR)param_2[1]) { SysFreeString((BSTR)param_1[1]); pOVar2 = (BSTR)0x0; if ((BSTR)param_2[1] != (BSTR)0x0) { UVar1 = SysStringByteLen((BSTR)param_2[1]); pOVar2 = SysAllocStringByteLen((LPCSTR)param_2[1],UVar1); } param_1[1] = (int)pOVar2; if ((param_2[1] != 0) && (pOVar2 == (BSTR)0x0)) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } if ((BSTR)param_1[2] != (BSTR)param_2[2]) { SysFreeString((BSTR)param_1[2]); pOVar2 = (BSTR)0x0; if ((BSTR)param_2[2] != (BSTR)0x0) { UVar1 = SysStringByteLen((BSTR)param_2[2]); pOVar2 = SysAllocStringByteLen((LPCSTR)param_2[2],UVar1); } param_1[2] = (int)pOVar2; if ((param_2[2] != 0) && (pOVar2 == (BSTR)0x0)) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } if ((BSTR)param_1[3] != (BSTR)param_2[3]) { SysFreeString((BSTR)param_1[3]); pOVar2 = (BSTR)0x0; if ((BSTR)param_2[3] != (BSTR)0x0) { UVar1 = SysStringByteLen((BSTR)param_2[3]); pOVar2 = SysAllocStringByteLen((LPCSTR)param_2[3],UVar1); } param_1[3] = (int)pOVar2; if ((param_2[3] != 0) && (pOVar2 == (BSTR)0x0)) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } if ((BSTR)param_1[4] != (BSTR)param_2[4]) { SysFreeString((BSTR)param_1[4]); pOVar2 = (BSTR)0x0; if ((BSTR)param_2[4] != (BSTR)0x0) { UVar1 = SysStringByteLen((BSTR)param_2[4]); pOVar2 = SysAllocStringByteLen((LPCSTR)param_2[4],UVar1); } param_1[4] = (int)pOVar2; if ((param_2[4] != 0) && (pOVar2 == (BSTR)0x0)) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } return param_1; } ``` ## FUN_10050df0 at 10050df0 Signature: `undefined FUN_10050df0(void)` ```c void __thiscall FUN_10050df0(int param_1,undefined4 param_2,int param_3) { char cVar1; int *piVar2; int *piVar3; int *piVar4; int *local_10; int *local_c; int local_8; local_8 = param_1; FUN_10035620(&local_10,¶m_3); piVar3 = local_10; if (local_10 != local_c) { do { FUN_10141d60(param_2,*(undefined4 *)(param_3 + 0x50)); if (*(char *)((int)piVar3 + 0x15) == '\0') { piVar4 = (int *)piVar3[2]; if (*(char *)((int)piVar4 + 0x15) == '\0') { cVar1 = *(char *)(*piVar4 + 0x15); piVar3 = piVar4; piVar4 = (int *)*piVar4; while (cVar1 == '\0') { cVar1 = *(char *)(*piVar4 + 0x15); piVar3 = piVar4; piVar4 = (int *)*piVar4; } } else { cVar1 = *(char *)(piVar3[1] + 0x15); piVar2 = (int *)piVar3[1]; piVar4 = piVar3; while ((piVar3 = piVar2, cVar1 == '\0' && (piVar4 == (int *)piVar3[2]))) { cVar1 = *(char *)(piVar3[1] + 0x15); piVar2 = (int *)piVar3[1]; piVar4 = piVar3; } } } piVar4 = local_10; } while (piVar3 != local_c); while (piVar4 != local_c) { (**(code **)(*(int *)(piVar4[4] + 4) + 4))(); if (*(char *)((int)piVar4 + 0x15) == '\0') { piVar3 = (int *)piVar4[2]; if (*(char *)((int)piVar3 + 0x15) == '\0') { cVar1 = *(char *)(*piVar3 + 0x15); piVar4 = piVar3; piVar3 = (int *)*piVar3; while (cVar1 == '\0') { cVar1 = *(char *)(*piVar3 + 0x15); piVar4 = piVar3; piVar3 = (int *)*piVar3; } } else { cVar1 = *(char *)(piVar4[1] + 0x15); piVar2 = (int *)piVar4[1]; piVar3 = piVar4; while ((piVar4 = piVar2, cVar1 == '\0' && (piVar3 == (int *)piVar4[2]))) { cVar1 = *(char *)(piVar4[1] + 0x15); piVar2 = (int *)piVar4[1]; piVar3 = piVar4; } } } } } FUN_10048fe0(&local_c,local_10,local_c); piVar3 = (int *)**(int **)(param_1 + 0x680); if (piVar3 != *(int **)(param_1 + 0x680)) { do { if (piVar3[2] == param_3) { if (piVar3[3] != 0) { FUN_100e3de0(param_3,param_2,piVar3 + 2); } piVar4 = (int *)*piVar3; param_1 = local_8; if (piVar3 != *(int **)(local_8 + 0x680)) { *(int **)piVar3[1] = piVar4; *(int *)(*piVar3 + 4) = piVar3[1]; operator_delete(piVar3); *(int *)(local_8 + 0x684) = *(int *)(local_8 + 0x684) + -1; param_1 = local_8; } } else { piVar4 = (int *)*piVar3; } piVar3 = piVar4; } while (piVar4 != *(int **)(param_1 + 0x680)); } return; } ``` ## FUN_1005f730 at 1005f730 Signature: `undefined FUN_1005f730(void)` ```c undefined1 * __thiscall FUN_1005f730(int *param_1,int *param_2) { undefined4 *puVar1; undefined1 *puVar2; uint uVar3; int iVar4; void *local_10; undefined1 *puStack_c; undefined4 local_8; puVar2 = (undefined1 *)param_2; puStack_c = &LAB_1015db38; local_10 = ExceptionList; uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; *(undefined1 *)param_2 = 0; *(undefined4 *)((int)param_2 + 2) = 0; *(undefined4 *)((int)param_2 + 6) = 0; *(undefined4 *)((int)param_2 + 10) = 0; *(undefined4 *)((int)param_2 + 0xe) = 0; *(undefined2 *)((int)param_2 + 0x12) = 0; puVar1 = (undefined4 *)*param_1; param_2 = (int *)0x0; local_8 = 1; if (puVar1 != (undefined4 *)0x0) { (**(code **)*puVar1)(puVar1,&DAT_1017b690,¶m_2,uVar3); } local_8 = 2; iVar4 = (**(code **)(*param_2 + 0xc))(param_2,puVar2); if (iVar4 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar4,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x7f); } local_8 = 0xffffffff; if (param_2 != (int *)0x0) { (**(code **)(*param_2 + 8))(param_2); } ExceptionList = local_10; return puVar2; } ```