# Lmx.dll selected decompile ## FUN_100054b0 at 100054b0 Signature: `undefined FUN_100054b0(void)` ```c int * __thiscall FUN_100054b0(int *param_1,undefined4 param_2) { int *piVar1; HRESULT HVar2; int *local_8; *param_1 = 0; param_1[1] = 0; local_8 = param_1; if (DAT_101d6470 == (int *)0x0) { local_8 = DAT_101d6470; HVar2 = CoGetClassObject((IID *)&DAT_1017b1c0,0x17,(LPVOID)0x0,(IID *)&DAT_1017b1d0,&local_8); if (HVar2 < 0) { param_2 = 0x80004005; /* WARNING: Subroutine does not return */ _CxxThrowException(¶m_2,(ThrowInfo *)&DAT_101a8794); } DAT_101d6470 = local_8; } (**(code **)(*DAT_101d6470 + 0x14))(DAT_101d6470,param_1,0); piVar1 = (int *)*param_1; if (piVar1 == (int *)0x0) { param_2 = 0x80004005; /* WARNING: Subroutine does not return */ _CxxThrowException(¶m_2,(ThrowInfo *)&DAT_101a8794); } (**(code **)(*piVar1 + 0x44))(piVar1,param_2); return param_1; } ``` ## FUN_1000df40 at 1000df40 Signature: `undefined FUN_1000df40(void)` ```c bool FUN_1000df40(int *param_1,undefined4 param_2) { int iVar1; undefined4 local_8; local_8 = 0; iVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,4,&local_8); return iVar1 == 0; } ``` ## 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_1008af90 at 1008af90 Signature: `undefined FUN_1008af90(void)` ```c undefined4 FUN_1008af90(FILETIME *param_1,FILETIME *param_2,short *param_3,uint *param_4,uint *param_5) { short sVar1; LONG LVar2; FILETIME local_c; if ((*param_3 == 0) && (*(int *)(param_3 + 2) == 4)) { sVar1 = param_3[6]; if ((sVar1 == 3) || ((sVar1 == 4 || (sVar1 == 8)))) { local_c.dwLowDateTime = 0; local_c.dwHighDateTime = 0; LVar2 = CompareFileTime(param_1,&local_c); if (LVar2 != 1) { return 1; } if ((int)param_4[1] < (int)param_1->dwHighDateTime) { return 1; } if (((int)param_4[1] <= (int)param_1->dwHighDateTime) && (*param_4 < param_1->dwLowDateTime)) { return 1; } return 0; } if (sVar1 != 6) { return 1; } local_c.dwLowDateTime = 0; local_c.dwHighDateTime = 0; LVar2 = CompareFileTime(param_2,&local_c); if (LVar2 == 1) { if ((int)param_2->dwHighDateTime < (int)param_5[1]) { return 0; } if (((int)param_2->dwHighDateTime <= (int)param_5[1]) && (param_2->dwLowDateTime <= *param_5)) { return 0; } } if (((int)param_1->dwHighDateTime <= (int)param_4[1]) && (((int)param_1->dwHighDateTime < (int)param_4[1] || (param_1->dwLowDateTime <= *param_4)))) { return 0; } } return 1; } ``` ## FUN_1008c670 at 1008c670 Signature: `undefined FUN_1008c670(void)` ```c void FUN_1008c670(undefined4 *param_1,void **param_2) { int iVar1; HRESULT HVar2; void **ppvVar3; undefined1 local_58 [8]; BSTR local_50; IID local_4c; void *local_3c [4]; undefined4 local_2c; undefined4 local_28; undefined2 local_24; undefined4 local_20; undefined4 local_1c; undefined2 local_18; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_10167188; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_4c.Data2 = 10; local_4c.Data3 = 0; local_1c = 10; local_4c.Data1._0_1_ = 'd'; local_4c.Data1._1_1_ = '\0'; local_4c.Data1._2_1_ = 0xa5; local_4c.Data1._3_1_ = '\0'; local_20 = 0xa50064; local_18 = 0; FUN_10005170(local_14); local_8 = 0; ppvVar3 = param_2; iVar1 = (**(code **)((int)*param_2 + 0x20)) (param_2,0,&local_20,local_58._4_4_,local_4c.Data4 + 4,local_3c); iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x14a,"CReferenceStringResolutionService.cpp"); if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) { HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[0xc].QueryInterface) ((IUnknown *)local_58._4_4_,(IID *)local_58,ppvVar3); if (HVar2 < 0) { _com_issue_errorex(HVar2,(IUnknown *)local_58._4_4_,(_GUID *)&DAT_1017ae18); } local_4c.Data1._0_1_ = local_58[0]; local_4c.Data1._1_1_ = local_58[1]; local_4c.Data1._2_1_ = 'j'; local_4c.Data1._3_1_ = '\0'; local_4c.Data2 = 10; local_2c = CONCAT22(0x6a,local_58._0_2_); local_4c.Data3 = 0; local_28 = 10; ppvVar3 = local_3c; local_24 = 0; iVar1 = (**(code **)((int)*param_2 + 0x20)) (param_2,0,&local_2c,local_58._4_4_,local_4c.Data4 + 4); iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x150,"CReferenceStringResolutionService.cpp"); if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) { local_4c.Data1._0_1_ = '\0'; local_4c.Data1._1_1_ = '\0'; local_4c.Data1._2_1_ = '\0'; local_4c.Data1._3_1_ = '\0'; local_4c.Data2 = 0; local_4c.Data3 = 0; HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[10].QueryInterface) ((IUnknown *)local_58._4_4_,&local_4c,ppvVar3); iVar1 = FUN_10048e60(HVar2 == 0,HVar2,0x156,"CReferenceStringResolutionService.cpp"); if (iVar1 != 0) { *param_1 = CONCAT22(local_4c.Data1._2_2_,(undefined2)local_4c.Data1); param_1[1] = CONCAT22(local_4c.Data3,local_4c.Data2); local_8 = 0xffffffff; FUN_10005220(); goto LAB_1008c82d; } } } *param_1 = 0; param_1[1] = 0; local_8 = 0xffffffff; if ((IUnknown *)local_58._4_4_ != (IUnknown *)0x0) { (*(*(IUnknownVtbl **)local_58._4_4_)->Release)((IUnknown *)local_58._4_4_); } SysFreeString(local_50); LAB_1008c82d: ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_1008c850 at 1008c850 Signature: `undefined FUN_1008c850(void)` ```c void FUN_1008c850(undefined4 *param_1,void **param_2) { int iVar1; HRESULT HVar2; void **ppvVar3; undefined1 local_58 [8]; BSTR local_50; IID local_4c; void *local_3c [4]; undefined4 local_2c; undefined4 local_28; undefined2 local_24; undefined4 local_20; undefined4 local_1c; undefined2 local_18; uint local_14; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_101671b8; local_10 = ExceptionList; local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc; ExceptionList = &local_10; local_4c.Data2 = 10; local_4c.Data3 = 0; local_1c = 10; local_4c.Data1._0_1_ = 'd'; local_4c.Data1._1_1_ = '\0'; local_4c.Data1._2_1_ = 0xa5; local_4c.Data1._3_1_ = '\0'; local_20 = 0xa50064; local_18 = 0; FUN_10005170(local_14); local_8 = 0; ppvVar3 = param_2; iVar1 = (**(code **)((int)*param_2 + 0x20)) (param_2,0,&local_20,local_58._4_4_,local_4c.Data4 + 4,local_3c); iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x16c,"CReferenceStringResolutionService.cpp"); if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) { HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[0xc].QueryInterface) ((IUnknown *)local_58._4_4_,(IID *)local_58,ppvVar3); if (HVar2 < 0) { _com_issue_errorex(HVar2,(IUnknown *)local_58._4_4_,(_GUID *)&DAT_1017ae18); } local_4c.Data1._0_1_ = local_58[0]; local_4c.Data1._1_1_ = local_58[1]; local_4c.Data1._2_1_ = 'k'; local_4c.Data1._3_1_ = '\0'; local_4c.Data2 = 10; local_2c = CONCAT22(0x6b,local_58._0_2_); local_4c.Data3 = 0; local_28 = 10; ppvVar3 = local_3c; local_24 = 0; iVar1 = (**(code **)((int)*param_2 + 0x20)) (param_2,0,&local_2c,local_58._4_4_,local_4c.Data4 + 4); iVar1 = FUN_10048e60(iVar1 == 0,iVar1,0x172,"CReferenceStringResolutionService.cpp"); if (((iVar1 != 0) && (local_4c.Data4._4_2_ == 0xc0)) && ((short)local_3c[0] != 0)) { local_4c.Data1._0_1_ = '\0'; local_4c.Data1._1_1_ = '\0'; local_4c.Data1._2_1_ = '\0'; local_4c.Data1._3_1_ = '\0'; local_4c.Data2 = 0; local_4c.Data3 = 0; HVar2 = (*(*(IUnknownVtbl **)local_58._4_4_)[10].QueryInterface) ((IUnknown *)local_58._4_4_,&local_4c,ppvVar3); iVar1 = FUN_10048e60(HVar2 == 0,HVar2,0x178,"CReferenceStringResolutionService.cpp"); if (iVar1 != 0) { *param_1 = CONCAT22(local_4c.Data1._2_2_,(undefined2)local_4c.Data1); param_1[1] = CONCAT22(local_4c.Data3,local_4c.Data2); local_8 = 0xffffffff; FUN_10005220(); goto LAB_1008ca0d; } } } *param_1 = 0; param_1[1] = 0; local_8 = 0xffffffff; if ((IUnknown *)local_58._4_4_ != (IUnknown *)0x0) { (*(*(IUnknownVtbl **)local_58._4_4_)->Release)((IUnknown *)local_58._4_4_); } SysFreeString(local_50); LAB_1008ca0d: ExceptionList = local_10; __security_check_cookie(local_14 ^ (uint)&stack0xfffffffc); return; } ``` ## FUN_1008fb20 at 1008fb20 Signature: `undefined FUN_1008fb20(void)` ```c void __fastcall FUN_1008fb20(undefined4 *param_1) { char cVar1; UINT len; BSTR pOVar2; int iVar3; int iVar4; undefined4 uVar5; undefined4 uVar6; if ((BSTR)*param_1 == (BSTR)0x0) { return; } len = SysStringByteLen((BSTR)*param_1); pOVar2 = SysAllocStringByteLen((LPCSTR)*param_1,len); if (pOVar2 != (BSTR)0x0) { return; } iVar3 = FUN_10022ff0(); if (*(int *)(iVar3 + 0xac) == 0) { iVar4 = FUN_1002f080(); if (iVar4 == 0) { uVar5 = 0; goto LAB_1008fb68; } } uVar5 = *(undefined4 *)(iVar3 + 0xac); LAB_1008fb68: uVar6 = 0; FUN_10022ff0(uVar5,0); cVar1 = FUN_10022ba0(uVar5,uVar6); if (cVar1 != '\0') { uVar5 = FUN_10022ff0(L"Fail to allocate %ld bytes in AAComBSTR::Copy()",len); FUN_10022cb0(uVar5); } /* WARNING: Subroutine does not return */ FUN_1005bf30(0x8007000e,0, "E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\ClassUtilities\\AAComBSTR.h" ,0x8b); } ``` ## FUN_100934d0 at 100934d0 Signature: `undefined FUN_100934d0(void)` ```c int __thiscall FUN_100934d0(undefined4 *param_1,int *param_2) { int *piVar1; int iVar2; BSTR pOVar3; undefined4 local_18; undefined4 local_14; int local_10; uint local_c; UINT local_8; piVar1 = param_2; if (param_2 == (int *)0x0) { return -0x7ff8ffa9; } SysFreeString((BSTR)*param_1); *param_1 = 0; local_10 = (**(code **)(*piVar1 + 0x14))(piVar1,0,0,1,&local_18); local_8 = 0; local_c = 0; iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,&local_c,4,&local_8); if (iVar2 < 0) goto LAB_100935e9; if (local_8 != 4) { iVar2 = -0x7fffbffb; goto LAB_100935e9; } if (local_c != 0) { if (local_c < 2) { iVar2 = -0x7fffbffb; goto LAB_100935e9; } if (0x100000 < local_c) { iVar2 = -0x7ff8fffb; goto LAB_100935e9; } local_c = local_c - 2; pOVar3 = SysAllocStringByteLen((LPCSTR)0x0,local_c); *param_1 = pOVar3; if (pOVar3 == (BSTR)0x0) { iVar2 = -0x7ff8fff2; goto LAB_100935e9; } iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,pOVar3,local_c,&local_8); if (-1 < iVar2) { if (local_8 == local_c) { iVar2 = (**(code **)(*piVar1 + 0xc))(piVar1,¶m_2,2,&local_8); if (iVar2 < 0) goto LAB_100935d6; if ((local_8 == 2) && ((short)param_2 == 0)) { return iVar2; } } iVar2 = -0x7fffbffb; } LAB_100935d6: SysFreeString((BSTR)*param_1); *param_1 = 0; } if (-1 < iVar2) { return iVar2; } LAB_100935e9: if (-1 < local_10) { (**(code **)(*piVar1 + 0x14))(piVar1,local_18,local_14,0,0); } return iVar2; } ``` ## FUN_10093680 at 10093680 Signature: `undefined FUN_10093680(void)` ```c bool FUN_10093680(int *param_1,undefined4 param_2) { int iVar1; undefined4 local_8; local_8 = 0; iVar1 = (**(code **)(*param_1 + 0x10))(param_1,param_2,0x10,&local_8); return iVar1 == 0; } ``` ## FUN_10093780 at 10093780 Signature: `undefined FUN_10093780(void)` ```c int __thiscall FUN_10093780(undefined4 *param_1,int *param_2) { int *piVar1; int iVar2; UINT UVar3; undefined4 *local_8; piVar1 = param_2; if (param_2 == (int *)0x0) { return -0x7ff8ffa9; } iVar2 = 4; local_8 = param_1; if ((BSTR)*param_1 != (BSTR)0x0) { UVar3 = SysStringByteLen((BSTR)*param_1); iVar2 = UVar3 + 6; } param_2 = (int *)(iVar2 + -4); iVar2 = (**(code **)(*piVar1 + 0x10))(piVar1,¶m_2,4,&local_8); if (-1 < iVar2) { if (param_2 == (int *)0x0) { return 0; } iVar2 = (**(code **)(*piVar1 + 0x10))(piVar1,*param_1,param_2,&local_8); } return iVar2; } ``` ## FUN_10093800 at 10093800 Signature: `undefined FUN_10093800(void)` ```c bool FUN_10093800(undefined4 param_1,OLECHAR *param_2) { int iVar1; BSTR bstrString; void *local_10; undefined1 *puStack_c; undefined4 local_8; local_8 = 0xffffffff; puStack_c = &LAB_10167cb8; local_10 = ExceptionList; ExceptionList = &local_10; if (param_2 == (OLECHAR *)0x0) { bstrString = (BSTR)0x0; } else { bstrString = SysAllocString(param_2); if (bstrString == (BSTR)0x0) { /* WARNING: Subroutine does not return */ FUN_100013e0(0x8007000e); } } local_8 = 0; iVar1 = FUN_10093780(param_1); local_8 = 0xffffffff; SysFreeString(bstrString); ExceptionList = local_10; return iVar1 == 0; } ``` ## FUN_1005f700 at 1005f700 Signature: `undefined FUN_1005f700(void)` ```c void __thiscall FUN_1005f700(undefined4 *param_1,undefined4 param_2) { int iVar1; iVar1 = (**(code **)(*(int *)*param_1 + 0x44))((int *)*param_1,param_2); if (iVar1 < 0) { /* WARNING: Subroutine does not return */ FUN_1005bf30(iVar1,0,"E:\\BldSrc\\6\\s\\ExtInterfaces\\Lmx\\IMxReferencePtr.h",0x75); } 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; } ``` ## 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_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; } ```