# Lmx.dll selected decompile ## FUN_100ea780 at 100ea780 Signature: `undefined FUN_100ea780(void)` ```c void FUN_100ea780(int param_1,OLECHAR *param_2,long *param_3) { int *piVar1; BSTR pOVar2; char cVar3; undefined1 uVar4; undefined4 uVar5; basic_ostream_> *pbVar6; undefined4 *puVar7; int iVar8; int iVar9; uint *puVar10; UINT UVar11; undefined4 *puVar12; long lVar13; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var14; long local_44; int local_40; BSTR local_3c; undefined4 *local_34; BSTR local_30; int local_2c; uint local_14; void *local_10; undefined1 *puStack_c; int local_8; local_8 = 0xffffffff; puStack_c = &LAB_1016e5de; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_2c = param_1; local_44 = -0x7fffbffb; if (DAT_101d6458 == '\0') { LAB_100ea902: cVar3 = FUN_100408d0(); if (cVar3 != '\0') { p_Var14 = endl_exref; uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::PrebindReference - ENTER referenceString "); pbVar6 = (basic_ostream_> *) FUN_1001a0e0(uVar5); std::basic_ostream_>::operator<< (pbVar6,p_Var14); } local_34 = operator_new(0xb4); local_8 = 4; if (local_34 == (void *)0x0) { puVar7 = (undefined4 *)0x0; } else { puVar7 = (undefined4 *)FUN_101139c0(); } local_8 = 0xffffffff; local_34 = puVar7; } else { cVar3 = FUN_10096c70(); if (cVar3 == '\0') goto LAB_100ea902; if (param_2 == (OLECHAR *)0x0) { local_30 = (BSTR)0x0; } else { local_30 = SysAllocString(param_2); if (local_30 == (BSTR)0x0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(0x8007000e,0); } } pOVar2 = local_30; local_3c = (BSTR)0x0; local_8._0_1_ = 1; local_8._1_3_ = 0; local_34 = (undefined4 *)&stack0xffffff8c; FUN_1008fb20(); local_8 = CONCAT31(local_8._1_3_,1); FUN_10096f60(); cVar3 = FUN_100408d0(); if (cVar3 != '\0') { p_Var14 = endl_exref; uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::PrebindReference - ENTER referenceString \'",param_2, L"\' Substituted String \'",local_3c); uVar5 = FUN_1001a0e0(uVar5); uVar5 = FUN_1001a0e0(uVar5); uVar5 = FUN_1001a0e0(uVar5); pbVar6 = (basic_ostream_> *) FUN_1001dc00(uVar5); std::basic_ostream_>::operator<< (pbVar6,p_Var14); } local_34 = operator_new(0xb4); local_8._0_1_ = 3; if (local_34 == (void *)0x0) { puVar7 = (undefined4 *)0x0; } else { puVar7 = (undefined4 *)FUN_101139c0(); } local_8 = (uint)local_8._1_3_ << 8; local_34 = puVar7; SysFreeString(local_3c); local_8 = 0xffffffff; SysFreeString(pOVar2); } cVar3 = FUN_10048d60(puVar7 != (undefined4 *)0x0); if (cVar3 == '\0') goto LAB_100eab0d; FUN_100db730(); FUN_100c3730(&local_40); if ((char)local_3c == '\0') { if (puVar7 != (undefined4 *)0x0) { (**(code **)*puVar7)(); } puVar7 = *(undefined4 **)(local_40 + 0xc); goto LAB_100eab0d; } FUN_1005f590(); puVar12 = (undefined4 *)(local_2c + 0x9c); iVar8 = (**(code **)(**(int **)(local_2c + 0x9c) + 0x24))(); if (iVar8 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar8,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x45); } uVar5 = FUN_1005f6b0(); piVar1 = (int *)*puVar12; iVar9 = (**(code **)(*piVar1 + 0x44))(piVar1,uVar5); iVar8 = local_2c; if (iVar9 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar9,0); } local_34 = puVar12; FUN_1006b120(); pOVar2 = local_30; if (local_30 != *(BSTR *)(*(int *)(iVar8 + 0x1c) + 400)) { puVar10 = (uint *)FUN_1005f730(); if (((((char)*puVar10 != '\0') && (*puVar10 >> 0x10 != 0)) && ((short)puVar10[1] != 0)) && ((puVar10[1] >> 0x10 != 0 && ((short)(puVar10[2] >> 0x10) != 0)))) { if ((BSTR)puVar7[0x2b] != (BSTR)0x0) { UVar11 = SysStringLen((BSTR)puVar7[0x2b]); if (UVar11 != 0) goto LAB_100eab04; } FUN_1003ec10(); FUN_101129c0(3); puVar12 = (undefined4 *)FUN_10001920(); iVar8 = *(int *)(pOVar2 + 6); *(undefined4 *)(iVar8 + 0x14) = *puVar12; *(undefined4 *)(iVar8 + 0x18) = puVar12[1]; } } LAB_100eab04: piVar1 = (int *)(*(int *)(local_40 + 0xc) + 0x14); *piVar1 = *piVar1 + 1; LAB_100eab0d: cVar3 = FUN_10048d60(puVar7 != (undefined4 *)0x0); if (cVar3 != '\0') { uVar4 = FUN_100e18b0(puVar7,param_3); cVar3 = FUN_10048d60(uVar4); if (cVar3 != '\0') { FUN_10113d40(); local_44 = 0; } } cVar3 = FUN_100408d0(); if (cVar3 != '\0') { lVar13 = *param_3; p_Var14 = endl_exref; pbVar6 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::PrebindReference - EXIT *preboundRefHandle ",lVar13, L" hResult "); pbVar6 = std::basic_ostream_>::operator<< (pbVar6,lVar13); pbVar6 = (basic_ostream_> *) FUN_1001a0e0(pbVar6); pbVar6 = std::basic_ostream_>::operator<< (pbVar6,local_44); std::basic_ostream_>::operator<< (pbVar6,p_Var14); } ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_100eabf0 at 100eabf0 Signature: `undefined FUN_100eabf0(void)` ```c void FUN_100eabf0(int param_1,int *param_2,long *param_3) { int *piVar1; char cVar2; undefined1 uVar3; void *pvVar4; BSTR pOVar5; undefined4 uVar6; basic_ostream_> *pbVar7; int iVar8; int iVar9; UINT UVar10; OLECHAR *psz; undefined4 *puVar11; BSTR pOVar12; long lVar13; long lVar14; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var15; undefined4 uVar16; char *pcVar17; undefined1 local_74 [4]; BSTR local_70; long *local_6c; int local_68; long local_64; BSTR local_60; BSTR local_5c; BSTR local_58; char local_51; undefined1 local_50 [20]; int *local_3c; undefined4 local_38; undefined4 local_34; undefined4 local_30; undefined4 local_2c; undefined1 local_28; byte bStack_27; undefined2 uStack_26; undefined2 uStack_24; undefined2 uStack_22; undefined2 uStack_20; undefined2 uStack_1e; undefined2 local_1c; undefined2 uStack_1a; char local_18; undefined1 uStack_17; undefined2 uStack_16; uint local_14; void *local_10; undefined1 *puStack_c; int local_8; local_8 = 0xffffffff; puStack_c = &LAB_1016e64b; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_68 = param_1; local_6c = param_3; local_64 = -0x7fffbffb; if (param_2 == (int *)0x0) { local_64 = -0x7ff8ffa9; goto LAB_100eb12e; } if (DAT_101d6458 != '\0') { local_5c = (BSTR)0x0; local_70 = (BSTR)0x0; local_60 = (BSTR)0x0; local_8._1_3_ = 0; local_58 = (BSTR)0x0; local_8._0_1_ = 3; (**(code **)(*param_2 + 0x20))(param_2,&local_5c,local_14); (**(code **)(*param_2 + 0x40))(param_2,&local_70); cVar2 = FUN_10096ff0(&local_5c,&local_70,&local_60,&local_58); if (cVar2 != '\0') { FUN_1005f4f0(); local_8 = CONCAT31(local_8._1_3_,4); FUN_1003ec10(param_2); FUN_1005f730(local_50); (**(code **)(*local_3c + 0x24))(local_3c,local_60); (**(code **)(*local_3c + 0x44))(local_3c,local_58); FUN_1005f7e0(local_50); param_2 = local_3c; if (local_3c != (int *)0x0) { (**(code **)(*local_3c + 4))(local_3c); } local_8._0_1_ = 3; FUN_10021cc0(); } local_8._0_1_ = 2; SysFreeString(local_58); local_8._0_1_ = 1; SysFreeString(local_60); local_8 = (uint)local_8._1_3_ << 8; SysFreeString(local_70); local_8 = 0xffffffff; SysFreeString(local_5c); } pvVar4 = operator_new(0xb4); local_18 = (char)pvVar4; uStack_17 = (undefined1)((uint)pvVar4 >> 8); uStack_16 = (undefined2)((uint)pvVar4 >> 0x10); local_8 = 5; if (pvVar4 == (void *)0x0) { pOVar5 = (BSTR)0x0; } else { pOVar5 = (BSTR)FUN_10113b10(param_2,*(undefined4 *)(param_1 + 0x1c)); } local_8 = 0xffffffff; local_5c = pOVar5; cVar2 = FUN_10048d60(pOVar5 != (BSTR)0x0,0x837,"MxConnection.cpp"); if (cVar2 != '\0') { cVar2 = FUN_100408d0(); if (cVar2 != '\0') { p_Var15 = endl_exref; uVar6 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::PrebindReferenceEx - ENTER referenceString ",pOVar5 + 0xc ," contextString ",pOVar5 + 0x1a); uVar6 = FUN_1001dec0(uVar6); uVar6 = FUN_1001dc00(uVar6); pbVar7 = (basic_ostream_> *) FUN_1001dec0(uVar6); std::basic_ostream_>::operator<< (pbVar7,p_Var15); } uVar16 = 0; uVar6 = FUN_100db730(&local_5c); FUN_100c3730(&local_1c,uVar6,uVar16); if (local_18 == '\0') { if (pOVar5 != (BSTR)0x0) { (*(code *)**(undefined4 **)pOVar5)(1); } pOVar5 = *(BSTR *)(CONCAT22(uStack_1a,local_1c) + 0xc); } else { uVar6 = FUN_1005f590(); iVar8 = (**(code **)(**(int **)(param_1 + 0x9c) + 0x24))(*(int **)(param_1 + 0x9c),uVar6); if (iVar8 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar8,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x45); } uVar6 = FUN_1005f6b0(); piVar1 = *(int **)(param_1 + 0x9c); iVar9 = (**(code **)(*piVar1 + 0x44))(piVar1,uVar6); iVar8 = local_68; if (iVar9 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar9,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75); } local_70 = (BSTR)(param_1 + 0x9c); FUN_1006b120(&local_60,&local_70); pOVar12 = local_60; if (local_60 != *(BSTR *)(*(int *)(iVar8 + 0x1c) + 400)) { if (*(BSTR *)(pOVar5 + 0x56) != (BSTR)0x0) { UVar10 = SysStringLen(*(BSTR *)(pOVar5 + 0x56)); if (UVar10 != 0) goto LAB_100eaf01; } FUN_1003ec10(**(undefined4 **)(pOVar12 + 6)); FUN_101129c0(3,"MxConnection.cpp",0x857); puVar11 = (undefined4 *)FUN_10001920(local_74); iVar8 = *(int *)(pOVar12 + 6); *(undefined4 *)(iVar8 + 0x14) = *puVar11; *(undefined4 *)(iVar8 + 0x18) = puVar11[1]; } LAB_100eaf01: piVar1 = (int *)(*(int *)(CONCAT22(uStack_1a,local_1c) + 0xc) + 0x14); *piVar1 = *piVar1 + 1; pOVar5 = local_5c; } } cVar2 = FUN_10048d60(pOVar5 != (BSTR)0x0,0x860,"MxConnection.cpp"); if (cVar2 != '\0') { pcVar17 = "MxConnection.cpp"; uVar6 = 0x867; uVar3 = FUN_100e18b0(pOVar5,local_6c); cVar2 = FUN_10048d60(uVar3,uVar6,pcVar17); if (cVar2 != '\0') { psz = pOVar5 + 0xc; local_51 = '\0'; if (7 < *(uint *)(pOVar5 + 0x16)) { psz = *(OLECHAR **)psz; } if (psz == (OLECHAR *)0x0) { local_58 = (BSTR)0x0; } else { local_58 = SysAllocString(psz); if (local_58 == (BSTR)0x0) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } local_8 = 6; uStack_1e = 0; local_1c = 0; uStack_26 = 0; uStack_24 = 0; uStack_22 = 0; uStack_20 = 0; local_34 = 0; uStack_1a = 0; local_18 = '\0'; uStack_17 = 0; uStack_16 = 0; local_38 = 0; local_28 = 0; local_3c = (int *)((uint)bStack_27 << 8); local_30 = 0; local_2c = 0; if (local_58 == (BSTR)0x0) { LAB_100eafe4: pOVar12 = local_58; puVar11 = (undefined4 *)FUN_1005f730(local_50); uVar6 = *puVar11; local_28 = (undefined1)uVar6; bStack_27 = (byte)((uint)uVar6 >> 8); uStack_26 = (undefined2)((uint)uVar6 >> 0x10); uStack_24 = (undefined2)puVar11[1]; uStack_22 = (undefined2)((uint)puVar11[1] >> 0x10); uVar6 = puVar11[4]; uStack_20 = (undefined2)puVar11[2]; uStack_1e = (undefined2)((uint)puVar11[2] >> 0x10); local_1c = (undefined2)puVar11[3]; uStack_1a = (undefined2)((uint)puVar11[3] >> 0x10); local_18 = (char)uVar6; uStack_17 = (undefined1)((uint)uVar6 >> 8); uStack_16 = (undefined2)((uint)uVar6 >> 0x10); cVar2 = FUN_10005710(); if (cVar2 == '\0') { FUN_1005f7e0(&local_3c); FUN_10113d40(); puVar11 = (undefined4 *)FUN_1005f730(local_50); uVar6 = *puVar11; local_28 = (undefined1)uVar6; bStack_27 = (byte)((uint)uVar6 >> 8); uStack_26 = (undefined2)((uint)uVar6 >> 0x10); uStack_24 = (undefined2)puVar11[1]; uStack_22 = (undefined2)((uint)puVar11[1] >> 0x10); uVar6 = puVar11[4]; uStack_20 = (undefined2)puVar11[2]; uStack_1e = (undefined2)((uint)puVar11[2] >> 0x10); local_1c = (undefined2)puVar11[3]; uStack_1a = (undefined2)((uint)puVar11[3] >> 0x10); local_18 = (char)uVar6; uStack_17 = (undefined1)((uint)uVar6 >> 8); uStack_16 = (undefined2)((uint)uVar6 >> 0x10); cVar2 = FUN_10005710(); if (cVar2 != '\0') { uStack_24 = 0xffff; uStack_20 = 0; uStack_1e = 0; local_1c = 0; uStack_1a = 0; local_18 = '\0'; uStack_17 = 0; FUN_10050df0(&uStack_24,pOVar5); } } } else { FUN_100e25c0(&local_58,&local_3c,0xffffffff,*local_6c,&local_51); if (local_51 == '\0') goto LAB_100eafe4; *(undefined1 *)(pOVar5 + 0x58) = 1; pOVar12 = local_58; } local_64 = 0; local_8 = 0xffffffff; SysFreeString(pOVar12); } } cVar2 = FUN_100408d0(); if (cVar2 != '\0') { lVar13 = *local_6c; lVar14 = local_64; p_Var15 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::PrebindReferenceEx - EXIT * preboundRefHandle ",lVar13, L" hResult "); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,lVar13); pbVar7 = (basic_ostream_> *) FUN_1001a0e0(pbVar7); pbVar7 = std::basic_ostream_>::operator<< (pbVar7,lVar14); std::basic_ostream_>::operator<< (pbVar7,p_Var15); } LAB_100eb12e: ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_100e1920 at 100e1920 Signature: `undefined FUN_100e1920(void)` ```c long FUN_100e1920(int param_1,long param_2,undefined4 param_3,int *param_4,uint *param_5) { int iVar1; char cVar2; undefined1 uVar3; basic_ostream_> *pbVar4; int *piVar5; uint uVar6; int *piVar7; int iVar8; long lVar9; int *piVar10; undefined4 uVar11; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var12; char *pcVar13; byte bStack_2b; long local_18; int local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_1016d37b; local_10 = ExceptionList; ExceptionList = &local_10; piVar7 = (int *)0x0; local_18 = -0x7fffbffb; local_14 = 0; cVar2 = FUN_100408d0(DAT_101d60b8 ^ (uint)&stack0xfffffffc); piVar5 = param_4; if (cVar2 != '\0') { lVar9 = param_2; piVar10 = param_4; p_Var12 = endl_exref; pbVar4 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::UserRegisterPreboundReference - ENTER preboundHandle ", param_2,L" userData "); pbVar4 = std::basic_ostream_>::operator<< (pbVar4,lVar9); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(pbVar4); pbVar4 = std::basic_ostream_>::operator<< (pbVar4,(long)piVar10); std::basic_ostream_>::operator<< (pbVar4,p_Var12); } pcVar13 = "MxConnection.cpp"; uVar11 = 0x8cb; uVar3 = FUN_100dd0d0(param_2,&local_14); cVar2 = FUN_10048d60(uVar3,uVar11,pcVar13); if (cVar2 == '\0') goto LAB_100e1c98; param_4 = operator_new(0x1e8); iVar8 = local_14; local_8 = 0; if (param_4 != (void *)0x0) { piVar7 = (int *)FUN_1013bef0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(local_14 + 0x50),1, param_3,piVar5,0,(uint)bStack_2b << 8,0,0,0,0,0, *(undefined4 *)(local_14 + 0xac)); } local_8 = 0xffffffff; param_4 = piVar7; cVar2 = FUN_10048d60(piVar7 != (int *)0x0,0x8d2,"MxConnection.cpp"); if (cVar2 != '\0') { iVar8 = *(int *)(param_1 + 0x2c); piVar5 = (int *)FUN_100dca80(¶m_3,¶m_4); iVar1 = *piVar5; if (iVar1 == *(int *)(iVar8 + 0x168)) { uVar11 = FUN_1002d030(¶m_4); FUN_100dbbf0(¶m_4,iVar1,uVar11); cVar2 = FUN_10048d60(param_4 != *(int **)(iVar8 + 0x168),0x8e1,"MxConnection.cpp"); iVar8 = local_14; if (cVar2 == '\0') { if (piVar7 != (int *)0x0) { (**(code **)*piVar7)(1); } piVar7 = (int *)0x0; local_18 = -0x7ff8fff2; iVar8 = local_14; } } else { if (piVar7 != (int *)0x0) { (**(code **)*piVar7)(1); } piVar7 = *(int **)(iVar1 + 0xc); iVar8 = local_14; } } cVar2 = FUN_10048d60(piVar7 != (int *)0x0,0x8fb,"MxConnection.cpp"); if (cVar2 == '\0') goto LAB_100e1c98; uVar6 = FUN_10056e00(); cVar2 = FUN_10048d60(0 < (int)uVar6,0x904,"MxConnection.cpp"); if (cVar2 == '\0') goto LAB_100e1c98; param_4 = (int *)(param_1 + 0x4c); if ((uint)(*(int *)(param_1 + 0x50) - *(int *)(param_1 + 0x4c) >> 2) <= uVar6) { FUN_100dcba0(uVar6 + 100); } cVar2 = FUN_10048d60(uVar6 < (uint)(param_4[1] - *param_4 >> 2),0x910,"MxConnection.cpp"); if (cVar2 == '\0') goto LAB_100e1c98; iVar1 = *(int *)(iVar8 + 0xa8); if (((iVar1 == 1) || (iVar1 == 2)) || (*(char *)(iVar8 + 0xb0) != '\0')) { *(undefined1 *)(iVar8 + 0xb0) = 0; cVar2 = FUN_1009f9a0(); if (cVar2 == '\0') { uVar11 = *(undefined4 *)(iVar8 + 0x50); uVar3 = *(undefined1 *)(iVar8 + 0x10); LAB_100e1c66: FUN_10141bb0(uVar3,uVar11); goto LAB_100e1c6d; } FUN_101392c0(9,"MxConnection.cpp",0x91e); pcVar13 = "MxConnection.cpp"; uVar11 = 0x91f; uVar3 = FUN_1005afb0(iVar8,piVar7); FUN_10048d60(uVar3,uVar11,pcVar13); } else if (iVar1 == 4) { LAB_100e1c6d: FUN_10144630(); } else if (iVar1 == 3) { pcVar13 = "MxConnection.cpp"; uVar11 = 0x936; uVar3 = FUN_10141bb0(*(undefined1 *)(iVar8 + 0x10),*(undefined4 *)(iVar8 + 0x50)); FUN_10048d60(uVar3,uVar11,pcVar13); } else { cVar2 = FUN_1009f9c0(); if (cVar2 != '\0') { uVar11 = *(undefined4 *)(iVar8 + 0x50); uVar3 = *(undefined1 *)(iVar8 + 0x10); goto LAB_100e1c66; } } *(int **)(*param_4 + uVar6 * 4) = piVar7; *param_5 = uVar6; piVar7[0x42] = piVar7[0x42] + 1; (**(code **)piVar7[1])(); local_18 = 0; LAB_100e1c98: cVar2 = FUN_100408d0(); if (cVar2 == '\0') { ExceptionList = local_10; return local_18; } uVar6 = *param_5; lVar9 = local_18; p_Var12 = endl_exref; pbVar4 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::UserRegisterPreboundReference - EXIT pMxReferenceHandle ", uVar6,L" hResult "); pbVar4 = std::basic_ostream_>::operator<< (pbVar4,uVar6); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(pbVar4); pbVar4 = std::basic_ostream_>::operator<< (pbVar4,lVar9); std::basic_ostream_>::operator<< (pbVar4,p_Var12); ExceptionList = local_10; return local_18; } ``` ## FUN_100df1a0 at 100df1a0 Signature: `undefined FUN_100df1a0(void)` ```c long FUN_100df1a0(int param_1,int param_2) { int iVar1; char cVar2; basic_ostream_> *pbVar3; int *piVar4; undefined4 uVar5; undefined4 *puVar6; long lVar7; int iVar8; long lVar9; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var10; undefined4 *local_c; long local_8; puVar6 = (undefined4 *)0x0; local_8 = -0x7ff8ffa9; local_c = (undefined4 *)0x0; cVar2 = FUN_100408d0(); iVar1 = param_2; if (cVar2 != '\0') { iVar8 = param_2; p_Var10 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::UnregisterPreboundReference - ENTER preboundRefHandle "); pbVar3 = std::basic_ostream_>::operator<< (pbVar3,iVar8); std::basic_ostream_>::operator<< (pbVar3,p_Var10); } iVar8 = *(int *)(param_1 + 0x4c); uVar5 = 0; if ((iVar1 < *(int *)(param_1 + 0x50) - iVar8 >> 2) && (*(int *)(iVar8 + iVar1 * 4) != 0)) { puVar6 = *(undefined4 **)(iVar8 + iVar1 * 4); piVar4 = puVar6 + 5; *piVar4 = *piVar4 + -1; if (*piVar4 == 0) { (**(code **)*puVar6)(1); } puVar6 = *(undefined4 **)(*(int *)(param_1 + 0x4c) + iVar1 * 4); *(undefined4 *)(*(int *)(param_1 + 0x4c) + iVar1 * 4) = 0; param_2 = iVar1; local_c = puVar6; FUN_100421a0(¶m_2); uVar5 = 1; } cVar2 = FUN_10048d60(uVar5,0x8a2,"MxConnection.cpp"); lVar7 = local_8; if (cVar2 != '\0') { if (puVar6[5] == 1) { piVar4 = (int *)FUN_100484c0(¶m_2,&local_c); iVar1 = *piVar4; cVar2 = FUN_10048d60(iVar1 != *(int *)(*(int *)(param_1 + 0x1c) + 0x180),0x8ad, "MxConnection.cpp"); lVar7 = local_8; if (cVar2 != '\0') { FUN_100382e0(¶m_2,iVar1); piVar4 = puVar6 + 5; *piVar4 = *piVar4 + -1; if (*piVar4 == 0) { (**(code **)*puVar6)(1); } lVar7 = 0; } } else { local_8 = 0; lVar7 = local_8; } } cVar2 = FUN_100408d0(); if (cVar2 != '\0') { lVar9 = lVar7; p_Var10 = endl_exref; pbVar3 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x14), L"MxConnection::UnregisterPreboundReference - EXIT hResult "); pbVar3 = std::basic_ostream_>::operator<< (pbVar3,lVar9); std::basic_ostream_>::operator<< (pbVar3,p_Var10); } return lVar7; } ``` ## FUN_10113d40 at 10113d40 Signature: `undefined FUN_10113d40(void)` ```c /* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */ void __fastcall FUN_10113d40(int param_1) { char cVar1; uint uVar2; undefined4 uVar3; basic_ostream_> *pbVar4; UINT UVar5; char *pcVar6; OLECHAR *psz; int iVar7; undefined4 *puVar8; wchar_t *pwVar9; int *piVar10; DWORD DVar11; wchar_t *pwVar12; int iVar13; undefined4 ****ppppuVar14; int *piVar15; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var16; wchar_t **ppwVar17; undefined4 uVar18; undefined4 local_1410; undefined4 local_140c; BSTR local_1408; wchar_t *local_1404; byte local_13fe; byte local_13fd [5001]; void *local_74 [4]; undefined4 local_64; uint local_60; undefined4 ***local_58 [4]; undefined4 local_48; uint local_44; undefined1 local_3c [4]; undefined4 local_38; BSTR local_2c; undefined4 local_28; undefined2 local_24; short sStack_22; undefined2 local_20; undefined2 uStack_1e; undefined4 local_1c; undefined4 local_18; uint local_14; void *local_10; undefined1 *puStack_c; int local_8; local_8 = 0xffffffff; puStack_c = &LAB_101727e7; local_10 = ExceptionList; uVar2 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_14 = uVar2; cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { p_Var16 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::Resolve - referenceString ",param_1 + 0x18, L" contextString ",param_1 + 0x34); uVar3 = FUN_1001dec0(uVar3); uVar3 = FUN_1001a0e0(uVar3); pbVar4 = (basic_ostream_> *) FUN_1001dec0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var16); } cVar1 = FUN_100408d0(uVar2); if (cVar1 != '\0') { uVar3 = FUN_1002f5f0(*(undefined4 *)(param_1 + 0x50)); p_Var16 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::Resolve - ENTER mxReference ",uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var16); } if ((*(BSTR *)(param_1 + 0xac) == (BSTR)0x0) || (UVar5 = SysStringLen(*(BSTR *)(param_1 + 0xac)), UVar5 == 0)) { pcVar6 = (char *)FUN_1005f730(&local_28); if (*pcVar6 == '\0') { local_13fe = local_13fe & 0xfe; local_44 = 7; local_48 = 0; local_58[0] = (undefined4 ***)((uint)local_58[0] & 0xffff0000); local_60 = 7; local_64 = 0; local_74[0] = (void *)((uint)local_74[0] & 0xffff0000); local_8._1_3_ = 0; local_8._0_1_ = 1; psz = (OLECHAR *)(param_1 + 0x18); local_1410 = 0; local_140c = 0; if (7 < *(uint *)(param_1 + 0x2c)) { psz = *(OLECHAR **)psz; } if (psz == (OLECHAR *)0x0) { local_1404 = (wchar_t *)0x0; } else { local_1404 = SysAllocString(psz); if (local_1404 == (BSTR)0x0) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } pwVar12 = local_1404; local_8._0_1_ = 2; local_13fd[0] = 0; iVar7 = _wcsnicmp(local_1404,L"MyPlatform.",0xb); if ((iVar7 == 0) && (*(int *)(param_1 + 0x44) == 0)) { FUN_1005fef0(); local_8._0_1_ = 3; uVar3 = FUN_1005ff70(); FUN_1005f700(uVar3); uVar3 = FUN_1005f6b0(); FUN_10014740(uVar3); local_8._0_1_ = 4; SysFreeString(local_2c); local_8._0_1_ = 2; FUN_10028fc0(); pwVar12 = local_1404; } else { cVar1 = FUN_10134a10(pwVar12); if ((cVar1 != '\0') && (((*(int *)(param_1 + 0x44) != 0 && (iVar7 = _wcsnicmp(pwVar12,L"MyArea.",7), iVar7 != 0) ) && (iVar7 = _wcsnicmp(pwVar12,L"MyContainer.",0xc), iVar7 != 0)))) { piVar10 = (int *)(param_1 + 0x34); local_13fd[0] = 1; if (7 < *(uint *)(param_1 + 0x48)) { piVar10 = (int *)*piVar10; } FUN_10014740(piVar10); pwVar12 = local_1404; } } puVar8 = (undefined4 *)FUN_1005f730(local_3c); local_28 = *puVar8; local_24 = (undefined2)puVar8[1]; sStack_22 = (short)((uint)puVar8[1] >> 0x10); local_20 = (undefined2)puVar8[2]; uStack_1e = (undefined2)((uint)puVar8[2] >> 0x10); local_1c = puVar8[3]; local_18 = puVar8[4]; *(undefined1 *)(param_1 + 0x10) = 0; cVar1 = FUN_10089cb0(pwVar12,&local_28,&local_1408,&local_13fe,local_58,local_74,&local_1410,1 ); if (cVar1 != '\0') { pwVar9 = (wchar_t *)(param_1 + 0x18); if (7 < *(uint *)(param_1 + 0x2c)) { pwVar9 = *(wchar_t **)pwVar9; } iVar7 = _wcsnicmp(pwVar9,L"MyHost.",7); if ((iVar7 != 0) || (sStack_22 != 1)) { *(undefined1 *)(param_1 + 0x10) = 1; ppppuVar14 = (undefined4 ****)local_58[0]; if (local_44 < 8) { ppppuVar14 = local_58; } iVar7 = (**(code **)(**(int **)(param_1 + 0x50) + 0x2c)) (*(int **)(param_1 + 0x50),ppppuVar14); if (iVar7 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar7,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x55); } if (local_13fd[0] != 0) { pwVar9 = (wchar_t *)(param_1 + 0x18); if (7 < *(uint *)(param_1 + 0x2c)) { pwVar9 = *(wchar_t **)pwVar9; } iVar7 = _wcsnicmp(pwVar9,L"MyEngine.",9); if (iVar7 == 0) { cVar1 = FUN_100408d0(); if (cVar1 != '\0') { piVar10 = (int *)(param_1 + 0x34); if (7 < *(uint *)(param_1 + 0x48)) { piVar10 = (int *)*piVar10; } piVar15 = (int *)(param_1 + 0x18); if (7 < *(uint *)(param_1 + 0x2c)) { piVar15 = (int *)*piVar15; } p_Var16 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::Resolve() - Correcting context info for ref string " ,piVar15,L" Context ",piVar10); uVar3 = FUN_1001a0e0(uVar3); uVar3 = FUN_1001a0e0(uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>:: operator<<(pbVar4,p_Var16); } sStack_22 = 1; local_20 = 0; FUN_1008fc40(0); FUN_1008fc70(0); } } uVar3 = FUN_1008f8b0(local_3c,local_28,CONCAT22(sStack_22,local_24), CONCAT22(uStack_1e,local_20),local_1c,local_18,local_1408); FUN_1005f7e0(uVar3); FUN_1005f930(&local_1408); local_13fd[0] = local_13fe & 1; FUN_1008fca0(local_13fd); cVar1 = FUN_10113130(); if (cVar1 != '\0') { local_8._0_1_ = 1; SysFreeString(pwVar12); local_8 = (uint)local_8._1_3_ << 8; FUN_10024360(); local_8 = 0xffffffff; FUN_10024360(); goto LAB_101144f6; } cVar1 = FUN_100408d0(); if (cVar1 != '\0') { uVar3 = FUN_1002f5f0(*(undefined4 *)(param_1 + 0x50)); p_Var16 = endl_exref; uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::Resolve - Found mxReference ",uVar3, L" in object handle cache"); uVar3 = FUN_1001a0e0(uVar3); pbVar4 = (basic_ostream_> *) FUN_1001a0e0(uVar3); std::basic_ostream_>::operator<< (pbVar4,p_Var16); } } } local_8._0_1_ = 1; SysFreeString(pwVar12); local_8 = (uint)local_8._1_3_ << 8; if (7 < local_60) { operator_delete(local_74[0]); } local_60 = 7; local_64 = 0; local_74[0] = (void *)((uint)local_74[0] & 0xffff0000); local_8 = 0xffffffff; if (7 < local_44) { operator_delete(local_58[0]); } local_48 = 0; local_44 = 7; local_58[0] = (undefined4 ***)((uint)local_58[0] & 0xffff0000); } pcVar6 = (char *)FUN_1005f730(&local_28); if (*pcVar6 == '\0') { local_1404 = operator_new(8); if (local_1404 == (BSTR)0x0) { local_1408 = (BSTR)0x0; } else { *(undefined ***)local_1404 = CRefAdapter::vftable; *(undefined ***)local_1404 = CPreboundReferenceAdapter::vftable; *(int *)(local_1404 + 2) = param_1; local_1408 = local_1404; } local_8 = 0xffffffff; cVar1 = FUN_10048d60(local_1408 != (BSTR)0x0,0xbe,"preboundreference.cpp"); if (cVar1 != '\0') { *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1; *(undefined4 *)(param_1 + 0xa8) = 1; DVar11 = GetTickCount(); local_38 = CONCAT22(local_38._2_2_,0xffff); local_2c = (BSTR)((uint)local_2c & 0xffff0000); FUN_1008f150(local_1408,0,0,0,0,local_38,1,0,local_2c,0,DVar11); } } else { iVar7 = FUN_1005f730(&local_28); if (*(short *)(iVar7 + 10) == 0) { pwVar12 = (wchar_t *)(param_1 + 0x18); if (7 < *(uint *)(param_1 + 0x2c)) { pwVar12 = *(wchar_t **)pwVar12; } iVar7 = _wcsnicmp(pwVar12,L"MyPlatform.",0xb); if ((iVar7 == 0) && (iVar7 = FUN_1005f730(&local_28), *(short *)(iVar7 + 4) != 1)) { local_1404 = (BSTR)0x0; local_8 = 8; ppwVar17 = &local_1404; iVar7 = FUN_1005f730(local_3c); FUN_10015b40(*(undefined2 *)(iVar7 + 2),ppwVar17); UVar5 = SysStringLen(local_1404); if (UVar5 == 0) { iVar7 = FUN_10022ff0(); if ((*(int *)(iVar7 + 0xac) == 0) && (iVar13 = FUN_1002f080(), iVar13 == 0)) { uVar3 = 0; } else { uVar3 = *(undefined4 *)(iVar7 + 0xac); } uVar18 = 0; FUN_10022ff0(uVar3,0); cVar1 = FUN_10022ba0(uVar3,uVar18); if (cVar1 != '\0') { iVar7 = FUN_1005f730(local_3c); uVar3 = FUN_10022ff0(L"PreboundReference::Resolve() - GetPlatformNameFromId returned a NULL platform name for id %d" ,*(undefined2 *)(iVar7 + 2)); FUN_10022cb0(uVar3); } } puVar8 = (undefined4 *)FUN_1005f730(local_3c); local_28 = *puVar8; local_20 = (undefined2)puVar8[2]; uStack_1e = (undefined2)((uint)puVar8[2] >> 0x10); local_1c = puVar8[3]; local_18 = puVar8[4]; local_24 = 1; sStack_22 = 1; FUN_1005f7e0(&local_28); uVar3 = FUN_1005f6b0(); FUN_10049370(uVar3); FUN_1005f700(local_1404); SysFreeString(local_1404); local_1404 = (BSTR)0x0; *(undefined1 *)(param_1 + 0x6c) = 1; local_8 = 0xffffffff; SysFreeString((BSTR)0x0); } FUN_101131d0(); } } cVar1 = FUN_100408d0(); if (cVar1 != '\0') { p_Var16 = endl_exref; pbVar4 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x20), L"PreboundReference::Resolve - EXIT"); std::basic_ostream_>::operator<< (pbVar4,p_Var16); } } LAB_101144f6: ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_101155a0 at 101155a0 Signature: `undefined FUN_101155a0(void)` ```c /* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */ void __thiscall FUN_101155a0(undefined4 *param_1,undefined4 param_2) { int *piVar1; char cVar2; uint uVar3; undefined4 uVar4; int iVar5; char *pcVar6; basic_ostream_> *pbVar7; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var8; undefined1 *local_145c; undefined1 local_1458; byte bStack_1457; undefined2 uStack_1456; undefined2 local_1454; undefined2 uStack_1452; undefined2 uStack_1450; undefined2 local_144e; undefined2 uStack_144c; undefined2 uStack_144a; undefined2 local_1448; ushort uStack_1446; char local_1441; undefined1 local_b8 [144]; int local_28; undefined4 local_24; undefined4 local_20; undefined4 local_1c; undefined4 local_18; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_101729db; local_10 = ExceptionList; uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_14 = uVar3; FUN_1003ec10(param_2); local_1441 = param_1[0x29] == 1; cVar2 = FUN_100408d0(uVar3); if (cVar2 != '\0') { uVar4 = FUN_1002f5f0(param_2); uVar4 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38), L"PreboundReference::OnPlatformResolveReferenceResults",uVar4); FUN_1001a0e0(uVar4); } iVar5 = FUN_1005f730(&local_28); if (*(short *)(iVar5 + 10) == 0) { local_1454 = 0xffff; local_1448 = 2; param_1[0x2a] = 0; param_1[0x23] = CONCAT22(uStack_1452,0xffff); param_1[0x24] = 3; param_1[0x25] = 0; param_1[0x26] = CONCAT22(uStack_1446,2); pcVar6 = strrchr("preboundreference.cpp",0x5c); if (pcVar6 == (char *)0x0) { pcVar6 = "preboundreference.cpp"; } else { pcVar6 = pcVar6 + 1; } FUN_10112a00(pcVar6); param_1[0x28] = 0x327; if (local_1441 == '\0') { cVar2 = FUN_100408d0(); if (cVar2 != '\0') { FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38), L"Local platform failed to resolve reference - starting over."); } } else { param_1[0x29] = 2; cVar2 = FUN_100408d0(); if (cVar2 != '\0') { p_Var8 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c), L"PreboundReference - local platform resolution - failed."); std::basic_ostream_>::operator<< (pbVar7,p_Var8); } } local_144e = 0; uStack_144c = 0; uStack_1452 = 0; uStack_1450 = 0; local_20 = 0; uStack_1456 = 0; local_1454 = 0; uStack_144a = 0; local_1448 = 0; uStack_1446 = 0; local_24 = 0; local_1458 = 0; local_28 = (uint)bStack_1457 << 8; local_1c = 0; local_18 = 0; FUN_1005f7e0(&local_28); } else { FUN_1004c220(); local_8 = 0; FUN_1004c320(param_1[0x14]); local_145c = local_b8; FUN_10073b80(&local_145c,0); param_1[0x2a] = 3; param_1[0x29] = 0; FUN_10114620(); local_1454 = 0xffff; local_1448 = 0; param_1[0x23] = CONCAT22(uStack_1452,0xffff); param_1[0x24] = 0; param_1[0x25] = 0; param_1[0x26] = (uint)uStack_1446 << 0x10; pcVar6 = strrchr("preboundreference.cpp",0x5c); if (pcVar6 == (char *)0x0) { pcVar6 = "preboundreference.cpp"; } else { pcVar6 = pcVar6 + 1; } FUN_10112a00(pcVar6); param_1[0x28] = 0x314; if (param_1[0x29] == 1) { cVar2 = FUN_100408d0(); if (cVar2 != '\0') { p_Var8 = endl_exref; pbVar7 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x1c), L"PreboundReference - local platform resolution - success."); std::basic_ostream_>::operator<< (pbVar7,p_Var8); } } else { cVar2 = FUN_100408d0(); if (cVar2 != '\0') { FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),L"Local platform resolved reference."); } } iVar5 = FUN_1005f730(&local_28); FUN_10040470(*(undefined2 *)(iVar5 + 2)); local_8 = 0xffffffff; FUN_1002e080(); } (**(code **)(param_1[1] + 4))(); cVar2 = FUN_100408d0(); if (cVar2 != '\0') { std::basic_ostream_>::operator<< (*(basic_ostream_> **) (DAT_101d6474 + 0x38),endl_exref); } if ((param_1[0x2a] != 1) && (param_1[0x2a] != 2)) { FUN_10050df0(param_1 + 0x23,param_1); } if (local_1441 != '\0') { piVar1 = param_1 + 5; *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { (**(code **)*param_1)(1); } } ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## 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_10141bb0 at 10141bb0 Signature: `undefined FUN_10141bb0(void)` ```c /* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */ void __thiscall FUN_10141bb0(int param_1,undefined1 param_2,undefined4 param_3) { int iVar1; char cVar2; uint uVar3; undefined4 uVar4; basic_ostream_> *pbVar5; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var6; bool local_1394; uVar3 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; local_1394 = false; cVar2 = FUN_100408d0(); if (cVar2 != '\0') { uVar4 = FUN_1002f5f0(param_3); p_Var6 = endl_exref; uVar4 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34), L"Reference::InitializeWithPreboundReference - ENTER pReference ",uVar4); pbVar5 = (basic_ostream_> *) FUN_1001a0e0(uVar4); std::basic_ostream_>::operator<< (pbVar5,p_Var6); } iVar1 = *(int *)(param_1 + 0xa4); if (((((iVar1 == 1) || (iVar1 == 2)) || (iVar1 == 6)) || ((iVar1 == 8 || (iVar1 == 10)))) || (iVar1 == 0xb)) { local_1394 = true; } else { FUN_1004c320(param_3); *(undefined1 *)(param_1 + 0x154) = param_2; if ((((char)*(uint *)(param_1 + 0x1c) != '\0') && (*(uint *)(param_1 + 0x1c) >> 0x10 != 0)) && (((short)*(uint *)(param_1 + 0x20) != 0 && ((*(uint *)(param_1 + 0x20) >> 0x10 != 0 && (*(short *)(param_1 + 0x26) != 0)))))) { cVar2 = FUN_10001360(); if (cVar2 == '\0') { FUN_101392c0(3,"Reference.cpp",0xca3); FUN_10141580(); } else { FUN_101392c0(8,"Reference.cpp",0xc99); FUN_10133cb0(param_1 + 4,param_1 + 0xc,0); } local_1394 = true; } } cVar2 = FUN_100408d0(); if (cVar2 != '\0') { p_Var6 = endl_exref; pbVar5 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34), L"Reference::InitializeWithPreboundReference - EXIT rc "); pbVar5 = std::basic_ostream_>::operator<< (pbVar5,local_1394); std::basic_ostream_>::operator<< (pbVar5,p_Var6); } __security_check_cookie(uVar3 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_10141d60 at 10141d60 Signature: `undefined FUN_10141d60(void)` ```c /* WARNING: Function: __alloca_probe replaced with injection: alloca_probe */ void __thiscall FUN_10141d60(int param_1,int *param_2,int param_3) { uint uVar1; uint uVar2; int *piVar3; char cVar4; undefined4 uVar5; basic_ostream_> *pbVar6; UINT UVar7; int iVar8; int iVar9; int iVar10; int iVar11; bool bVar12; _func_basic_ostream_>_ptr_basic_ostream_>_ptr *p_Var13; int local_15b0; undefined1 local_15ac; byte bStack_15ab; undefined2 uStack_15aa; undefined2 local_15a8; ushort uStack_15a6; undefined2 local_15a4; undefined2 uStack_15a2; short local_15a0; undefined2 uStack_159e; undefined2 local_159c; undefined2 uStack_159a; wchar_t local_210 [260]; uint local_8; local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; local_15b0 = param_3; cVar4 = FUN_100408d0(); if (cVar4 != '\0') { uVar5 = FUN_1002f5f0(param_3); swprintf_s(local_210,0x104,L"", (int)(short)*param_2,param_2[1],param_2[2],(int)(short)param_2[3]); p_Var13 = endl_exref; uVar5 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34), L"Reference::PreboundReferenceResolved - ENTER status ",local_210, L" pReference ",uVar5); uVar5 = FUN_1001a0e0(uVar5); uVar5 = FUN_1001a0e0(uVar5); pbVar6 = (basic_ostream_> *) FUN_1001a0e0(uVar5); std::basic_ostream_>::operator<< (pbVar6,p_Var13); param_3 = local_15b0; } if ((short)*param_2 == -1) { if (*(BSTR *)(param_1 + 0x16c) != (BSTR)0x0) { UVar7 = SysStringLen(*(BSTR *)(param_1 + 0x16c)); if (UVar7 != 0) goto LAB_10142175; } FUN_1004c320(param_3); uVar1 = *(uint *)(param_1 + 0x1c); uVar2 = *(uint *)(param_1 + 0x20); local_159c = *(undefined2 *)(param_1 + 0x24); local_15a4 = (undefined2)uVar1; uStack_15a2 = (undefined2)(uVar1 >> 0x10); local_15a0 = (short)uVar2; uStack_159e = (undefined2)(uVar2 >> 0x10); if (((((char)uVar1 == '\0') || (uVar1 >> 0x10 == 0)) || (local_15a0 == 0)) || ((uVar2 >> 0x10 == 0 || (*(short *)(param_1 + 0x26) == 0)))) { FUN_101392c0(4,"Reference.cpp",0xccc); local_15a8 = 0; local_159c = 6; FUN_10100da0((uint)uStack_15a6 << 0x10,4,0,CONCAT22(uStack_159a,6),"Reference.cpp",0xcce); uStack_15aa = 0; local_15a8 = 0; uStack_15a2 = 0; local_15a0 = 0; uStack_15a6 = 0; local_15a4 = 0; uStack_159e = 0; local_159c = 0; uStack_159a = 0; local_15ac = 0; *(uint *)(param_1 + 0x1c) = (uint)bStack_15ab << 8; *(undefined4 *)(param_1 + 0x20) = 0; *(undefined4 *)(param_1 + 0x24) = 0; *(undefined4 *)(param_1 + 0x28) = 0; *(undefined4 *)(param_1 + 0x2c) = 0; local_15b0 = param_1 + 0x10; FUN_10073b80(&local_15b0,0); FUN_10138180("Reference.cpp",0xcd6); piVar3 = *(int **)(param_1 + 0x1a8); if ((piVar3 != (int *)0x0) && (*(char *)(param_1 + 0x1bc) != '\0')) { if (*(int *)(param_1 + 0x108) == 0) { DAT_101d8c50 = DAT_101d8c50 + 1; cVar4 = FUN_100408d0(); if (cVar4 != '\0') { iVar11 = 0xce2; p_Var13 = endl_exref; pbVar6 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x40), L"no outstanding references refering to this reference callback will not be called line " ,0xce2,L" file ","Reference.cpp"); pbVar6 = std::basic_ostream_>:: operator<<(pbVar6,iVar11); uVar5 = FUN_1001a0e0(pbVar6); pbVar6 = (basic_ostream_> *) FUN_1001dc00(uVar5); std::basic_ostream_>::operator<< (pbVar6,p_Var13); } } else if (*(char *)(param_1 + 0x156) == '\0') { (**(code **)(*piVar3 + 0xc))(piVar3,*(undefined4 *)(param_1 + 0x1ac)); } } } else { FUN_101392c0(3,"Reference.cpp",0xcc3); FUN_10040470(*(undefined2 *)(param_1 + 0x1e)); FUN_10141580(); } } else { if (param_2[1] == 3) { FUN_101392c0(5,"Reference.cpp",0xcf3); uVar5 = 0xcf4; local_15a8 = 0; iVar11 = (uint)uStack_15a6 << 0x10; iVar9 = 0; local_159c = 7; iVar10 = 3; iVar8 = CONCAT22(uStack_159a,7); } else { FUN_101392c0(0,"Reference.cpp",0xcfb); iVar11 = *param_2; iVar10 = param_2[1]; uVar5 = 0xcfc; iVar9 = param_2[2]; iVar8 = param_2[3]; } FUN_10100da0(iVar11,iVar10,iVar9,iVar8,"Reference.cpp",uVar5); uStack_15aa = 0; local_15a8 = 0; uStack_15a2 = 0; local_15a0 = 0; uStack_15a6 = 0; local_15a4 = 0; uStack_159e = 0; local_159c = 0; uStack_159a = 0; local_15ac = 0; *(uint *)(param_1 + 0x1c) = (uint)bStack_15ab << 8; *(undefined4 *)(param_1 + 0x20) = 0; *(undefined4 *)(param_1 + 0x24) = 0; local_15b0 = param_1 + 0x10; *(undefined4 *)(param_1 + 0x28) = 0; *(undefined4 *)(param_1 + 0x2c) = 0; FUN_10073b80(&local_15b0,0); FUN_10138180("Reference.cpp",0xd07); } LAB_10142175: cVar4 = FUN_100408d0(); if (cVar4 != '\0') { bVar12 = true; p_Var13 = endl_exref; pbVar6 = (basic_ostream_> *) FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x34), L"Reference::PreboundReferenceResolved - EXIT rc "); pbVar6 = std::basic_ostream_>::operator<< (pbVar6,bVar12); std::basic_ostream_>::operator<< (pbVar6,p_Var13); } __security_check_cookie(local_8 ^ (uint)&stack0xfffffffc); return; } ```