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>
552 lines
21 KiB
Markdown
552 lines
21 KiB
Markdown
# LmxProxy.dll selected decompile
|
|
|
|
## FUN_10011b71 at 10011b71
|
|
|
|
Signature: `int __stdcall FUN_10011b71(int param_1, int param_2, OLECHAR * param_3, int * param_4)`
|
|
|
|
```c
|
|
|
|
/* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */
|
|
/* WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3 */
|
|
|
|
int FUN_10011b71(int param_1,int param_2,OLECHAR *param_3,int *param_4)
|
|
|
|
{
|
|
char cVar1;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> bVar2;
|
|
undefined1 uVar3;
|
|
undefined *puVar4;
|
|
int iVar5;
|
|
int *piVar6;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *pbVar7;
|
|
int *piVar8;
|
|
CComBSTR *pCVar9;
|
|
undefined4 *puVar10;
|
|
int iVar11;
|
|
uint uVar12;
|
|
OLECHAR *pOVar13;
|
|
undefined4 uVar14;
|
|
wchar_t *pwVar15;
|
|
_func_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr
|
|
*p_Var16;
|
|
undefined1 local_6c [4];
|
|
undefined4 local_68 [7];
|
|
undefined4 local_4c [7];
|
|
undefined4 local_30 [5];
|
|
undefined4 local_1c;
|
|
_func_void_uint__EXCEPTION_POINTERS_ptr *local_18 [4];
|
|
uint local_8;
|
|
undefined4 uStack_4;
|
|
|
|
uStack_4 = 0x5c;
|
|
local_8 = 0;
|
|
FUN_10011b07(local_18);
|
|
iVar11 = param_1;
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
cVar1 = FUN_1000d2d6(param_1 + -8);
|
|
piVar6 = param_4;
|
|
if (cVar1 == '\0') {
|
|
uVar14 = 0;
|
|
uVar12 = 1;
|
|
puVar4 = FUN_10003248();
|
|
iVar5 = FUN_10003897(puVar4,uVar12);
|
|
puVar4 = FUN_10003248();
|
|
uVar12 = FUN_1000305b(puVar4,iVar5,uVar14);
|
|
if ((char)uVar12 != '\0') {
|
|
pwVar15 =
|
|
L"Failed to retrieve information from the MXAccess_Runtime license. Either MXAccess_Runtime license is not available or expired."
|
|
;
|
|
piVar6 = (int *)FUN_10003248();
|
|
FUN_100030ef(piVar6,pwVar15);
|
|
}
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar15 = L" No Valid License found - returning E_ACCESSDENIED HRESULT";
|
|
p_Var16 = endl_exref;
|
|
uVar3 = FUN_1000d2d6(iVar11 + -8);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AddItem - Valid License: ");
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,(bool)uVar3);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar7,pwVar15);
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar7,p_Var16);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_18[0]);
|
|
param_2 = -0x7ff8fffb;
|
|
}
|
|
else if (param_3 == (OLECHAR *)0x0) {
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar15 = L" Item name NULL - returning E_INVALIDARG HRESULT";
|
|
iVar11 = param_2;
|
|
p_Var16 = endl_exref;
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AddItem - Server Handle: ");
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,iVar11);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar7,pwVar15);
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar7,p_Var16);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_18[0]);
|
|
param_2 = -0x7ff8ffa9;
|
|
}
|
|
else {
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (piVar6 == (int *)0x0) {
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar15 = L" Item handle is NULL - returning E_POINTER HRESULT";
|
|
iVar11 = param_2;
|
|
p_Var16 = endl_exref;
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AddItem - Server Handle: ");
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,iVar11);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar7,pwVar15);
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar7,p_Var16);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_18[0]);
|
|
param_2 = -0x7fffbffd;
|
|
}
|
|
else {
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar15 = L" Item name: ";
|
|
iVar5 = param_2;
|
|
pOVar13 = param_3;
|
|
p_Var16 = endl_exref;
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AddItem - Server Handle: ");
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,iVar5);
|
|
piVar8 = (int *)FUN_10002dbf((int *)pbVar7,pwVar15);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(piVar8,pOVar13);
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar7,p_Var16);
|
|
}
|
|
local_1c = 0;
|
|
piVar8 = (int *)FUN_1000f663((void *)(iVar11 + 0x24),¶m_1,¶m_2);
|
|
iVar5 = *piVar8;
|
|
if (iVar5 == *(int *)(iVar11 + 0x28)) {
|
|
param_2 = -0x7ff8ffa9;
|
|
}
|
|
else {
|
|
param_2 = (**(code **)(**(int **)(iVar5 + 0x28) + 0xc))
|
|
(*(int **)(iVar5 + 0x28),param_3,&local_1c);
|
|
if (param_2 == 0) {
|
|
piVar8 = (int *)(iVar5 + 0x14);
|
|
*piVar8 = *piVar8 + 1;
|
|
*piVar6 = *piVar8;
|
|
pCVar9 = FUN_1000dcbb(local_4c,param_3,local_1c);
|
|
local_8._0_1_ = 2;
|
|
puVar10 = FUN_1000f743(local_6c,piVar8,pCVar9);
|
|
local_8._0_1_ = 3;
|
|
cVar1 = '\0';
|
|
piVar8 = (int *)FUN_1000ffa9((void *)(iVar5 + 0x3c),puVar10);
|
|
FUN_100104d1((void *)(iVar5 + 0x3c),local_30,piVar8,cVar1);
|
|
local_8._0_1_ = 2;
|
|
FUN_1000d2ee(local_68);
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
FUN_1000d2ee(local_4c);
|
|
}
|
|
}
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
iVar11 = *piVar6;
|
|
pwVar15 = L" Item Handle: ";
|
|
iVar5 = param_2;
|
|
p_Var16 = endl_exref;
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AddItem - returning HRESULT ");
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,iVar5);
|
|
pbVar7 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar7,pwVar15);
|
|
pbVar7 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar7,iVar11);
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar7,p_Var16);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_18[0]);
|
|
}
|
|
}
|
|
return param_2;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_10012693 at 10012693
|
|
|
|
Signature: `undefined __stdcall FUN_10012693(int param_1, int param_2, int param_3)`
|
|
|
|
```c
|
|
|
|
/* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */
|
|
|
|
void FUN_10012693(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> bVar1;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *pbVar2;
|
|
int iVar3;
|
|
void *this;
|
|
int iVar4;
|
|
wchar_t *pwVar5;
|
|
_func_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr
|
|
*p_Var6;
|
|
_func_void_uint__EXCEPTION_POINTERS_ptr *local_24 [2];
|
|
int local_1c;
|
|
int local_18;
|
|
uint local_8;
|
|
undefined4 uStack_4;
|
|
|
|
uStack_4 = 0x38;
|
|
local_8 = 0;
|
|
FUN_10011b07(local_24);
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
local_18 = 0;
|
|
local_1c = 0;
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar5 = L" Item Handle ";
|
|
iVar4 = param_2;
|
|
iVar3 = param_3;
|
|
p_Var6 = endl_exref;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),L"CLMXProxyServer::Advise - Server Handle ")
|
|
;
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar4)
|
|
;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar2,pwVar5);
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar3)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,p_Var6);
|
|
}
|
|
this = (void *)(param_1 + -8);
|
|
local_18 = FUN_1000fa3b(this,param_2,param_3,¶m_1,&local_1c);
|
|
iVar4 = local_1c;
|
|
if (-1 < local_18) {
|
|
if (*(char *)(local_1c + 0x1c) == '\0') {
|
|
local_18 = FUN_1000f9b6(this,param_2,param_3,local_1c + 0x20,local_1c + 0x24);
|
|
iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x253,"LMXProxyServer.cpp");
|
|
if (iVar3 != 0) {
|
|
local_18 = (**(code **)(**(int **)(param_1 + 0x14) + 0x20))
|
|
(*(int **)(param_1 + 0x14),*(undefined4 *)(iVar4 + 0x14),
|
|
*(undefined4 *)(iVar4 + 0x20),param_3,iVar4 + 0x18);
|
|
iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x256,"LMXProxyServer.cpp"
|
|
);
|
|
if (iVar3 != 0) {
|
|
*(undefined1 *)(iVar4 + 0x1c) = 1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
local_18 = -0x7ff8ffa9;
|
|
}
|
|
}
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
iVar4 = local_18;
|
|
p_Var6 = endl_exref;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::Advise - returning HRESULT ");
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar4)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,p_Var6);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_24[0]);
|
|
FUN_1001286e();
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_100142b4 at 100142b4
|
|
|
|
Signature: `undefined __stdcall FUN_100142b4(int param_1, int param_2, int param_3)`
|
|
|
|
```c
|
|
|
|
/* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */
|
|
|
|
void FUN_100142b4(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> bVar1;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *pbVar2;
|
|
int iVar3;
|
|
void *this;
|
|
int iVar4;
|
|
wchar_t *pwVar5;
|
|
_func_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr
|
|
*p_Var6;
|
|
_func_void_uint__EXCEPTION_POINTERS_ptr *local_24 [2];
|
|
int local_1c;
|
|
int local_18;
|
|
uint local_8;
|
|
undefined4 uStack_4;
|
|
|
|
uStack_4 = 0x38;
|
|
local_8 = 0;
|
|
FUN_10011b07(local_24);
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
local_18 = 0;
|
|
local_1c = 0;
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar5 = L" Item Handle ";
|
|
iVar4 = param_2;
|
|
iVar3 = param_3;
|
|
p_Var6 = endl_exref;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AdviseSupervisory - Server Handle ");
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar4)
|
|
;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar2,pwVar5);
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar3)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,p_Var6);
|
|
}
|
|
this = (void *)(param_1 + -8);
|
|
local_18 = FUN_1000fa3b(this,param_2,param_3,¶m_1,&local_1c);
|
|
iVar4 = local_1c;
|
|
if (-1 < local_18) {
|
|
if (*(char *)(local_1c + 0x1c) == '\0') {
|
|
local_18 = FUN_1000f9b6(this,param_2,param_3,local_1c + 0x20,local_1c + 0x24);
|
|
iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x4d9,"LMXProxyServer.cpp");
|
|
if (iVar3 != 0) {
|
|
local_18 = (**(code **)(**(int **)(param_1 + 0x24) + 0xc))
|
|
(*(int **)(param_1 + 0x24),*(undefined4 *)(iVar4 + 0x14),0xffffffff,
|
|
*(undefined4 *)(iVar4 + 0x20),0,iVar4 + 0x18);
|
|
iVar3 = FUN_1000f8d9((undefined4 *)(uint)(local_18 == 0),local_18,0x4dc,"LMXProxyServer.cpp"
|
|
);
|
|
if (iVar3 != 0) {
|
|
*(undefined1 *)(iVar4 + 0x1c) = 1;
|
|
*(undefined1 *)(iVar4 + 0x1f) = 1;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
local_18 = -0x7ff8ffa9;
|
|
}
|
|
}
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
iVar4 = local_18;
|
|
p_Var6 = endl_exref;
|
|
pbVar2 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::AdviseSupervisory - returning HRESULT ");
|
|
pbVar2 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,iVar4)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar2,p_Var6);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_24[0]);
|
|
FUN_10014493();
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1001244d at 1001244d
|
|
|
|
Signature: `undefined __stdcall FUN_1001244d(int param_1, int param_2, int param_3)`
|
|
|
|
```c
|
|
|
|
/* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */
|
|
|
|
void FUN_1001244d(int param_1,int param_2,int param_3)
|
|
|
|
{
|
|
int *piVar1;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> bVar2;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *pbVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
wchar_t *pwVar6;
|
|
_func_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr
|
|
*p_Var7;
|
|
_func_void_uint__EXCEPTION_POINTERS_ptr *local_20 [2];
|
|
int *local_18 [4];
|
|
uint local_8;
|
|
undefined4 uStack_4;
|
|
|
|
uStack_4 = 0x34;
|
|
local_8 = 0;
|
|
FUN_10011b07(local_20);
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
local_18[0] = (int *)0x0;
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar6 = L" Item Handle ";
|
|
iVar5 = param_2;
|
|
iVar4 = param_3;
|
|
p_Var7 = endl_exref;
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::RemoveItem - Server Handle ");
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,iVar5)
|
|
;
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar3,pwVar6);
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,iVar4)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,p_Var7);
|
|
}
|
|
iVar4 = FUN_1000fa3b((void *)(param_1 + -8),param_2,param_3,¶m_3,(int *)local_18);
|
|
piVar1 = local_18[0];
|
|
iVar5 = param_3;
|
|
if (-1 < iVar4) {
|
|
FUN_1000d5d5(local_18[0] + 4,param_3);
|
|
FUN_10010202((void *)(iVar5 + 0x2c),¶m_3,piVar1);
|
|
iVar4 = 0;
|
|
}
|
|
bVar2 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar2 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
p_Var7 = endl_exref;
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::RemoveItem - returning HRESULT ");
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,iVar4)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,p_Var7);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_20[0]);
|
|
FUN_100125b4();
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1001294d at 1001294d
|
|
|
|
Signature: `undefined __stdcall FUN_1001294d(int param_1, LPCRITICAL_SECTION param_2, int param_3)`
|
|
|
|
```c
|
|
|
|
/* WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3 */
|
|
|
|
void FUN_1001294d(int param_1,LPCRITICAL_SECTION param_2,int param_3)
|
|
|
|
{
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> bVar1;
|
|
bool bVar2;
|
|
basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *pbVar3;
|
|
int iVar4;
|
|
int *piVar5;
|
|
LPCRITICAL_SECTION p_Var6;
|
|
wchar_t *pwVar7;
|
|
int iVar8;
|
|
_func_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr_basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>_ptr
|
|
*p_Var9;
|
|
_func_void_uint__EXCEPTION_POINTERS_ptr *local_24;
|
|
int *local_20;
|
|
int local_18 [4];
|
|
uint local_8;
|
|
undefined4 uStack_4;
|
|
|
|
uStack_4 = 0x38;
|
|
local_8 = 0;
|
|
FUN_10011b07(&local_24);
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
local_18[0] = 0;
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
pwVar7 = L" Item Handle ";
|
|
p_Var6 = param_2;
|
|
iVar8 = param_3;
|
|
p_Var9 = endl_exref;
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::UnAdvise - Server Handle ");
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<
|
|
(pbVar3,(long)p_Var6);
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf((int *)pbVar3,pwVar7);
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,iVar8)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,p_Var9);
|
|
}
|
|
iVar4 = FUN_1000fb02((void *)(param_1 + -8),(int)param_2,param_3,¶m_3,local_18);
|
|
iVar8 = local_18[0];
|
|
if (-1 < iVar4) {
|
|
if (*(char *)(local_18[0] + 0xf) == '\0') {
|
|
piVar5 = *(int **)(param_3 + 0x14);
|
|
}
|
|
else {
|
|
piVar5 = *(int **)(param_3 + 0x20);
|
|
}
|
|
param_3 = (**(code **)(*piVar5 + 0x10))(piVar5,*(undefined4 *)(local_18[0] + 8));
|
|
*(undefined1 *)(iVar8 + 0xc) = 0;
|
|
*(undefined1 *)(iVar8 + 0xf) = 0;
|
|
*(undefined4 *)(iVar8 + 8) = 0;
|
|
param_2 = (LPCRITICAL_SECTION)&DAT_100295bc;
|
|
EnterCriticalSection((LPCRITICAL_SECTION)&DAT_100295bc);
|
|
local_8 = CONCAT31(local_8._1_3_,2);
|
|
for (piVar5 = (int *)*DAT_100295b0; local_20 = piVar5, piVar5 != DAT_100295b0;
|
|
piVar5 = (int *)*piVar5) {
|
|
bVar2 = FUN_10008d10(piVar5 + 3,*(undefined4 **)(iVar8 + 0x10));
|
|
if (bVar2) {
|
|
FUN_1000fdf8(&DAT_100295b0,¶m_1,piVar5);
|
|
break;
|
|
}
|
|
}
|
|
local_8 = CONCAT31(local_8._1_3_,1);
|
|
LeaveCriticalSection(param_2);
|
|
FUN_1000cbb3((int *)(iVar8 + 0x10));
|
|
FUN_1000cbb3((int *)(iVar8 + 0x14));
|
|
iVar4 = param_3;
|
|
}
|
|
bVar1 = FUN_10003f01(*(basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> **)
|
|
(DAT_100294e0 + 0xc));
|
|
if (bVar1 != (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>)0x0) {
|
|
p_Var9 = endl_exref;
|
|
pbVar3 = (basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_> *)
|
|
FUN_10002dbf(*(int **)(DAT_100294e0 + 0xc),
|
|
L"CLMXProxyServer::UnAdvise - returning HRESULT ");
|
|
pbVar3 = std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,iVar4)
|
|
;
|
|
std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::operator<<(pbVar3,p_Var9);
|
|
}
|
|
local_8 = local_8 & 0xffffff00;
|
|
_set_se_translator(local_24);
|
|
FUN_10012b2c();
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|