fe2a6db786
rust / build / test / clippy / fmt (push) Has been cancelled
Layout:
- src/ .NET 10 x64 reference: MxNativeCodec, MxNativeClient,
MxAsbClient, probes, tests, harnesses. Executable spec.
- design/ Architectural plan for the Rust port (M0–M6), error
model, protocol invariants, risks (R1–R16), adversarial
review log (review.md).
- rust/ Rust workspace. M0 skeleton + M1 codec parity.
mxaccess-codec: 215 unit tests + 2 cross-implementation
parity tests (byte-identical against .NET reference).
Other crates are M0 stubs awaiting M2+.
- captures/ Frida + netsh + pcap evidence per CLAUDE.md
("captures are evidence, not throwaway logs").
- analysis/ Decompiled C# (frida/proxy/decompiled-*),
Ghidra exports for native DLLs (`exports/` only —
working state at `projects/` and AVEVA's input
binaries at `input/` are gitignored).
- docs/ Reverse-engineering reference docs.
- tools/ Setup-LiveProbeEnv.ps1 (Infisical credential fetcher),
Compute-Crc.ps1 (.NET parity helper).
- .github/workflows/ Rust CI: fmt + build + test + clippy on Windows.
- LICENSE MIT (Joseph Doherty, 2026).
Verified:
- cargo test --workspace → 217 passed (215 unit + 2 .NET parity), 0 failed
- cargo clippy --workspace -- -D warnings → clean
- cargo fmt --all -- --check → clean
- cargo publish --dry-run -p mxaccess-codec → packages cleanly
Excluded from history (see .gitignore):
- **/bin, **/obj, **/target — build artifacts
- analysis/ghidra/projects/ — Ghidra working state (regenerable)
- analysis/ghidra/input/ — AVEVA proprietary DLLs (vendor IP)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
28 KiB
28 KiB
Lmx.dll selected decompile
FUN_101139c0 at 101139c0
Signature: undefined FUN_101139c0(void)
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)
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)
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)
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)
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)
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<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar5;
int iVar6;
int *piVar7;
_func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_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<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
L"CReferenceStringResolver::ResolveReference - reference ",param_2,
L" guid ",uVar3,L" ref ",uVar4);
pbVar5 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
(pbVar5,piVar7);
uVar3 = FUN_1001a0e0(pbVar5);
uVar3 = FUN_1001a0e0(uVar3);
uVar3 = FUN_1001a0e0(uVar3);
pbVar5 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
FUN_1001a0e0(uVar3);
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::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<T> 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)
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<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar10;
bool bVar11;
wchar_t *pwVar12;
wchar_t *pwVar13;
wchar_t *pwVar14;
undefined *puVar15;
_func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_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<platform %d engine %d> partner<platform %d engine %d> redirected to <platform %d engine %d> "
,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<platform ";
pwVar12 = L"AccessManager::FixUpMxHandle - handle ";
p_Var16 = endl_exref;
pbVar10 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
operator<<(*(basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> **
)(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<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
FUN_1001a0e0(uVar8);
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::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)
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)
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)
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)
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)
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;
}