c73a33edd8
Path A landed for R3/R4. The byte->MxStatus synthesizer in Lmx.dll is
FUN_10100ce0 (`analysis/ghidra/exports/Lmx.dll.synthesizer-helpers2-decompile.md`),
a 4-byte u32 LE -> 4-tuple MxStatus decoder used by every NMX-frame
parser in Lmx.dll. The kernel is byte-deterministic and context-free,
so it ports as a pure function -- the operation-tracking state
machine the original verdict deferred is NOT required for synthesis.
Bit layout (per FUN_10100ce0 lines 21-24):
bit 31: success (-1 if set, 0 if clear)
bits 27..24: category (4 bits)
bits 23..20: detected_by (4 bits)
bits 15..0: detail (i16 -- low 16 bits, signed)
bits 30..28, 19..16: reserved/padding
Codec changes:
- MxStatus::from_packed_u32() / ::to_packed_u32() -- the kernel +
inverse for round-trip parity.
- MxStatus::from_nmx_response_code() -- the constructed-from-response-
code switch in FUN_1010bd10:741-770 (six proven mappings: 0x01, 0x02
-> CommunicationError + RequestingNmx; 0x03 -> ConfigurationError +
RequestingNmx; 0x04 -> ConfigurationError + RespondingNmx; 0x05 ->
CommunicationError + RespondingNmx; 0x1A -> CommunicationError +
RequestingNmx).
- MxStatusCategory / MxStatusSource: from_i16/to_i16 promoted to const
fn so MxStatus::from_packed_u32 can be const.
- NmxOperationStatusMessage::try_parse_process_data_received_body() --
thin wrapper that peels the outer NmxObservedEnvelope before
delegating to try_parse_inner. Mirrors
NmxOperationStatusMessage.TryParseProcessDataReceivedBody (.NET cs:20-32).
- NmxOperationStatusMessage::promote_to_typed() -- entry point that
returns the existing Status field. Documented as a no-op pass-through
for now (the 5-byte inner-body wire shape is NOT the same field as
the 4-byte packed-u32 the kernel decodes); kept for API symmetry.
- 22 new round-trip tests covering the kernel, the response-code
switch, the proven 0x00/0x41/0xEF completion bytes, and round-trip
for every canonical sentinel.
mxaccess (Session) changes:
- New OperationKind enum (Write/WriteSecured/Read/Subscribe/
Unsubscribe/Activate/Suspend/Other).
- New OperationContext struct (correlation_id, op_kind, reference,
retry_count) -- ground for the F54 follow-on per-operation
correlation work.
- New OperationStatus event type {raw, status, context,
is_during_recovery}, mirroring MxNativeOperationStatusEvent (cs:73-78)
with the typed-MxStatus addition.
- Session::operation_status_events() -> broadcast::Receiver<Arc<
OperationStatus>> + operation_status_stream() Stream variant.
- callback_router() now tries operation-status parsing first, falling
through to subscription messages -- matches MxNativeSession
.OnCallbackReceived dispatch order (cs:574,582,590).
- recover_connection() flips a recovery_active counter (Arc<AtomicU32>
shared with the router) so OperationStatus.is_during_recovery is
populated correctly. Mirrors MxNativeSession._recoveryActive
Volatile.Read at cs:573.
- 3 new router tests covering: status-word frame dispatch + typed
promotion to WriteCompleteOk; completion-only frames stay verbatim;
is_during_recovery is stamped from the live counter.
Per-operation context tracking (correlating completion frames back to
outstanding writes/subscribes via the correlation_id) is filed as F54
in design/followups.md. The synthesizer kernel itself is byte-
deterministic, so the kernel and the correlation work are decoupled.
Ghidra evidence (the next-ring xref walk beyond FUN_10114a90):
- analysis/ghidra/exports/Lmx.dll.set-attribute-result-xrefs.md --
xrefs to OnSetAttributeResult / CancelWithStatus / OperationComplete.
- analysis/ghidra/exports/Lmx.dll.vtable-data-xrefs.md -- vtable-slot
data xrefs for the virtual-dispatch path.
- analysis/ghidra/exports/Lmx.dll.synthesizer-decompile.md --
ScanOnDemandCallback::OperationComplete/MultipleOperationComplete
(FUN_1010b990), RemotePlatformResolver::OperationComplete
(FUN_1010dc80), and the constructed-from-responseCode synthesizer
in FUN_1010bd10 (lines 698-770). FUN_1010bd10 is the wire-frame
receiver that drives the synthesis.
- analysis/ghidra/exports/Lmx.dll.synthesizer-helpers-decompile.md --
FUN_10003fc0 (the <success %d category %d ...> formatter; confirms
the 4-tuple layout), FUN_1008f150 (dispatch helper).
- analysis/ghidra/exports/Lmx.dll.synthesizer-helpers2-decompile.md --
FUN_10100ce0 (the kernel itself), FUN_10100bc0 (3xu16 reader),
FUN_1005e580 (4-byte stream reader), FUN_1010ee00 (sister NMX-frame
parser using the same kernel).
- analysis/ghidra/exports/Lmx.dll.synthesizer-callers-xrefs.md --
caller graph; confirms the kernel is called from many wire-frame
parsers but each parser shares the single 4-byte decoder.
R3/R4 verdict updated in design/70-risks-and-open-questions.md from
"settled at verbatim-preserve" to "settled per Path A". F54 filed in
design/followups.md for the per-operation correlation work.
cargo build / test / clippy -D warnings / RUSTDOCFLAGS=-D warnings doc
all clean. cargo public-api baselines regenerated for mxaccess and
mxaccess-codec.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1150 lines
40 KiB
Markdown
1150 lines
40 KiB
Markdown
# Lmx.dll selected decompile
|
|
|
|
## FUN_1010b990 at 1010b990
|
|
|
|
Signature: `undefined FUN_1010b990(void)`
|
|
|
|
```c
|
|
|
|
void __thiscall FUN_1010b990(undefined4 *param_1,char param_2,short *param_3,int *param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
char cVar2;
|
|
undefined4 uVar3;
|
|
basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar4;
|
|
int iVar5;
|
|
short *psVar6;
|
|
int *piVar7;
|
|
int *piVar8;
|
|
int *piVar9;
|
|
int *piVar10;
|
|
wchar_t *pwVar11;
|
|
undefined4 *puVar12;
|
|
_func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
|
|
*p_Var13;
|
|
uint local_224;
|
|
wchar_t local_220 [260];
|
|
short local_18 [2];
|
|
uint local_14;
|
|
uint local_10;
|
|
undefined2 local_c;
|
|
uint local_8;
|
|
|
|
local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
if (param_2 == '\0') {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 == '\0') goto LAB_1010bb4d;
|
|
uVar3 = *(undefined4 *)(DAT_101d6474 + 0x44);
|
|
puVar12 = param_1 + 5;
|
|
pwVar11 = L"ScanOnDemandCallback::MultipleOperationComplete with sameStatus FALSE - destEngine "
|
|
;
|
|
p_Var13 = endl_exref;
|
|
}
|
|
else {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
swprintf_s(local_220,0x104,L"<success %d category %d detectedBy %d detail %d>",
|
|
(int)(short)*(undefined4 *)param_3,*(undefined4 *)(param_3 + 2),
|
|
*(undefined4 *)(param_3 + 4),(int)param_3[6]);
|
|
p_Var13 = endl_exref;
|
|
uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x44),
|
|
L"ScanOnDemandCallback::MultipleOperationComplete with sameStatus TRUE - mxStatus "
|
|
,local_220,L" destEngine ",param_1 + 5);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001db00(uVar3);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var13);
|
|
}
|
|
if (((*param_3 != 0) || (*(int *)(param_3 + 2) != 3)) ||
|
|
((param_3[6] != 2 && (param_3[6] != 1)))) goto LAB_1010bb4d;
|
|
if ((int)param_1[0xf] < 4) {
|
|
param_1[0xf] = param_1[0xf] + 1;
|
|
FUN_1010ad00(0,param_1 + 5,param_1[9],param_1 + 10,0,2,param_1,0,0,0,0);
|
|
__security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 == '\0') goto LAB_1010bb4d;
|
|
puVar12 = param_1 + 5;
|
|
pwVar11 = L" message to destEngine ";
|
|
p_Var13 = endl_exref;
|
|
uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 4),
|
|
L"ScanOnDemandCallback::OperationComplete - Send retry limit reached for ",
|
|
param_1[9],L" message to destEngine ",puVar12);
|
|
uVar3 = FUN_100a68d0(uVar3);
|
|
}
|
|
uVar3 = FUN_1001a0e0(uVar3,pwVar11,puVar12);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001db00(uVar3);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var13);
|
|
LAB_1010bb4d:
|
|
piVar8 = *(int **)param_1[2];
|
|
if (piVar8 != (int *)param_1[2]) {
|
|
do {
|
|
piVar10 = *(int **)piVar8[5];
|
|
if (piVar10 != (int *)piVar8[5]) {
|
|
do {
|
|
piVar9 = *(int **)piVar10[5];
|
|
if (piVar9 != (int *)piVar10[5]) {
|
|
do {
|
|
if (param_2 == '\0') {
|
|
iVar5 = (**(code **)(*param_4 + 0xc))(param_4,&local_224,4,0);
|
|
if (iVar5 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar5,0,
|
|
"E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\BaseRuntimeComponentServer\\LoadSave.h"
|
|
,0x12);
|
|
}
|
|
local_18[0] = -(ushort)((local_224 & 0x80000000) != 0);
|
|
local_10 = local_224 >> 0x14 & 0xf;
|
|
piVar7 = (int *)piVar9[7];
|
|
local_14 = local_224 >> 0x18 & 0xf;
|
|
local_c = (undefined2)local_224;
|
|
if (piVar7 != (int *)0x0) {
|
|
psVar6 = local_18;
|
|
goto LAB_1010bbf0;
|
|
}
|
|
}
|
|
else {
|
|
piVar7 = (int *)piVar9[7];
|
|
psVar6 = param_3;
|
|
if (piVar7 != (int *)0x0) {
|
|
LAB_1010bbf0:
|
|
(**(code **)(*piVar7 + 0x14))(0,psVar6);
|
|
}
|
|
}
|
|
if (*(char *)((int)piVar9 + 0x21) == '\0') {
|
|
piVar7 = (int *)piVar9[2];
|
|
if (*(char *)((int)piVar7 + 0x21) == '\0') {
|
|
cVar2 = *(char *)(*piVar7 + 0x21);
|
|
piVar9 = piVar7;
|
|
piVar7 = (int *)*piVar7;
|
|
while (cVar2 == '\0') {
|
|
cVar2 = *(char *)(*piVar7 + 0x21);
|
|
piVar9 = piVar7;
|
|
piVar7 = (int *)*piVar7;
|
|
}
|
|
}
|
|
else {
|
|
cVar2 = *(char *)(piVar9[1] + 0x21);
|
|
piVar1 = (int *)piVar9[1];
|
|
piVar7 = piVar9;
|
|
while ((piVar9 = piVar1, cVar2 == '\0' && (piVar7 == (int *)piVar9[2]))) {
|
|
cVar2 = *(char *)(piVar9[1] + 0x21);
|
|
piVar1 = (int *)piVar9[1];
|
|
piVar7 = piVar9;
|
|
}
|
|
}
|
|
}
|
|
} while (piVar9 != (int *)piVar10[5]);
|
|
}
|
|
if (*(char *)((int)piVar10 + 0x21) == '\0') {
|
|
piVar9 = (int *)piVar10[2];
|
|
if (*(char *)((int)piVar9 + 0x21) == '\0') {
|
|
cVar2 = *(char *)(*piVar9 + 0x21);
|
|
piVar10 = piVar9;
|
|
piVar9 = (int *)*piVar9;
|
|
while (cVar2 == '\0') {
|
|
cVar2 = *(char *)(*piVar9 + 0x21);
|
|
piVar10 = piVar9;
|
|
piVar9 = (int *)*piVar9;
|
|
}
|
|
}
|
|
else {
|
|
cVar2 = *(char *)(piVar10[1] + 0x21);
|
|
piVar7 = (int *)piVar10[1];
|
|
piVar9 = piVar10;
|
|
while ((piVar10 = piVar7, cVar2 == '\0' && (piVar9 == (int *)piVar10[2]))) {
|
|
cVar2 = *(char *)(piVar10[1] + 0x21);
|
|
piVar7 = (int *)piVar10[1];
|
|
piVar9 = piVar10;
|
|
}
|
|
}
|
|
}
|
|
} while (piVar10 != (int *)piVar8[5]);
|
|
}
|
|
if (*(char *)((int)piVar8 + 0x21) == '\0') {
|
|
piVar10 = (int *)piVar8[2];
|
|
if (*(char *)((int)piVar10 + 0x21) == '\0') {
|
|
cVar2 = *(char *)(*piVar10 + 0x21);
|
|
piVar8 = piVar10;
|
|
piVar10 = (int *)*piVar10;
|
|
while (cVar2 == '\0') {
|
|
cVar2 = *(char *)(*piVar10 + 0x21);
|
|
piVar8 = piVar10;
|
|
piVar10 = (int *)*piVar10;
|
|
}
|
|
}
|
|
else {
|
|
cVar2 = *(char *)(piVar8[1] + 0x21);
|
|
piVar9 = (int *)piVar8[1];
|
|
piVar10 = piVar8;
|
|
while ((piVar8 = piVar9, cVar2 == '\0' && (piVar10 == (int *)piVar8[2]))) {
|
|
cVar2 = *(char *)(piVar8[1] + 0x21);
|
|
piVar9 = (int *)piVar8[1];
|
|
piVar10 = piVar8;
|
|
}
|
|
}
|
|
}
|
|
} while (piVar8 != (int *)param_1[2]);
|
|
}
|
|
(**(code **)*param_1)(1);
|
|
__security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1010dc80 at 1010dc80
|
|
|
|
Signature: `undefined FUN_1010dc80(void)`
|
|
|
|
```c
|
|
|
|
void __thiscall FUN_1010dc80(undefined4 *param_1,undefined4 param_2,short *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
undefined4 uVar2;
|
|
basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
long lVar6;
|
|
_func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
|
|
*p_Var7;
|
|
undefined4 uVar8;
|
|
wchar_t local_210 [260];
|
|
uint local_8;
|
|
|
|
local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
cVar1 = FUN_100408d0();
|
|
if (cVar1 != '\0') {
|
|
swprintf_s(local_210,0x104,L"<success %d category %d detectedBy %d detail %d>",
|
|
(int)(short)*(undefined4 *)param_3,*(undefined4 *)(param_3 + 2),
|
|
*(undefined4 *)(param_3 + 4),(int)param_3[6]);
|
|
lVar6 = param_1[9];
|
|
p_Var7 = endl_exref;
|
|
uVar2 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
|
|
L"RemotePlatformResolver::OperationComplete - mxStatus ",local_210,
|
|
L" requesterEngine ",param_1 + 6,L" requesterData ");
|
|
uVar2 = FUN_1001a0e0(uVar2);
|
|
uVar2 = FUN_1001a0e0(uVar2);
|
|
uVar2 = FUN_1001db00(uVar2);
|
|
pbVar3 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(uVar2);
|
|
pbVar3 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar3,lVar6);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar3,p_Var7);
|
|
}
|
|
if (((*param_3 != 0) || (*(int *)(param_3 + 2) != 3)) || ((param_3[6] != 2 && (param_3[6] != 1))))
|
|
goto LAB_1010de0d;
|
|
if ((int)param_1[0x11] < 4) {
|
|
param_1[0x11] = param_1[0x11] + 1;
|
|
*(int *)(param_1[10] + 0x404) = *(int *)(param_1[10] + 0x404) + 1;
|
|
FUN_1010ad00(0,param_1 + 6,0xe,param_1 + 0xc,0,0,param_1,0,0,0,0);
|
|
__security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
iVar4 = FUN_10022ff0();
|
|
if (*(int *)(iVar4 + 0xac) == 0) {
|
|
iVar5 = FUN_1002f080();
|
|
if (iVar5 != 0) goto LAB_1010ddd5;
|
|
uVar2 = 0;
|
|
}
|
|
else {
|
|
LAB_1010ddd5:
|
|
uVar2 = *(undefined4 *)(iVar4 + 0xac);
|
|
}
|
|
uVar8 = 0;
|
|
FUN_10022ff0(uVar2,0);
|
|
cVar1 = FUN_10022ba0(uVar2,uVar8);
|
|
if (cVar1 != '\0') {
|
|
uVar2 = FUN_10022ff0(L"RemotePlatformResolver::OperationComplete - Send retry count for MxResolveOffPlatformResults message to requesterEngine g %d p %d e %d"
|
|
,param_1[6],param_1[7],param_1[8]);
|
|
FUN_10022cb0(uVar2);
|
|
}
|
|
LAB_1010de0d:
|
|
if (param_1 != (undefined4 *)0x0) {
|
|
(**(code **)*param_1)(1);
|
|
}
|
|
__security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1010bd10 at 1010bd10
|
|
|
|
Signature: `undefined FUN_1010bd10(void)`
|
|
|
|
```c
|
|
|
|
void FUN_1010bd10(int *param_1,long param_2,int param_3,BSTR param_4,int param_5,long param_6,
|
|
void *param_7,int param_8,int param_9)
|
|
|
|
{
|
|
int iVar1;
|
|
char cVar2;
|
|
undefined4 uVar3;
|
|
basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *pbVar4;
|
|
int *piVar5;
|
|
int iVar6;
|
|
undefined4 uVar7;
|
|
int iVar8;
|
|
undefined4 *puVar9;
|
|
undefined4 *puVar10;
|
|
long lVar11;
|
|
long lVar12;
|
|
BSTR pOVar13;
|
|
void *pvVar14;
|
|
_func_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr_basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>_ptr
|
|
*p_Var15;
|
|
undefined4 local_354;
|
|
undefined4 local_350;
|
|
uint local_34c;
|
|
undefined4 local_348 [8];
|
|
int *local_328;
|
|
BSTR local_324;
|
|
undefined4 local_320;
|
|
undefined4 local_31c;
|
|
int local_314;
|
|
uint local_310;
|
|
void *local_30c;
|
|
undefined4 local_308;
|
|
undefined4 local_304;
|
|
undefined4 local_300;
|
|
BSTR local_2fc;
|
|
long local_2f8;
|
|
long local_2f4;
|
|
int local_2f0;
|
|
char local_2e9;
|
|
void *local_2e8;
|
|
BSTR local_2e4;
|
|
int local_2e0;
|
|
undefined *local_54;
|
|
int local_50;
|
|
int local_4c;
|
|
int local_48;
|
|
undefined *local_44;
|
|
int local_40;
|
|
int local_3c;
|
|
int local_38;
|
|
undefined4 local_34;
|
|
undefined4 local_30;
|
|
undefined4 local_2c;
|
|
undefined4 local_28;
|
|
undefined4 local_24;
|
|
int local_20;
|
|
undefined4 local_1c;
|
|
uint local_18;
|
|
uint local_14;
|
|
void *local_10;
|
|
undefined1 *puStack_c;
|
|
uint local_8;
|
|
|
|
local_8 = 0xffffffff;
|
|
puStack_c = &LAB_10171dc6;
|
|
local_10 = ExceptionList;
|
|
local_14 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
ExceptionList = &local_10;
|
|
local_2f4 = param_2;
|
|
local_2e0 = param_3;
|
|
local_2f0 = param_5;
|
|
local_2f8 = param_6;
|
|
local_30c = param_7;
|
|
local_2e4 = param_4;
|
|
local_300 = 0;
|
|
local_308 = DAT_101d6504;
|
|
local_304 = DAT_101d6508;
|
|
FUN_10005170(local_14);
|
|
local_24 = (uint)local_24._2_2_ << 0x10;
|
|
local_20 = 0;
|
|
local_1c = 0;
|
|
local_18 = 0;
|
|
local_2e9 = '\0';
|
|
local_2fc = (BSTR)0x0;
|
|
local_8 = 1;
|
|
local_320 = 0;
|
|
local_3c = DAT_101a21cc;
|
|
local_4c = DAT_101a21cc;
|
|
local_30 = 0;
|
|
local_2c = 0;
|
|
local_28 = 0;
|
|
local_44 = PTR_101a21c4;
|
|
local_40 = DAT_101a21c8;
|
|
local_38 = DAT_101a21d0;
|
|
local_54 = PTR_101a21c4;
|
|
local_50 = DAT_101a21c8;
|
|
local_48 = DAT_101a21d0;
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
lVar12 = local_2f4;
|
|
lVar11 = local_2f8;
|
|
p_Var15 = endl_exref;
|
|
uVar3 = FUN_1001db60(*(undefined4 *)(DAT_101d6474 + 0x18),local_2e8,&DAT_1017b6e4,
|
|
L"GetResponse ",local_2e0,L" responseCode ",local_2f4,L" correlationId ");
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_100a68d0(uVar3);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(uVar3);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,lVar12);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(pbVar4);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,lVar11);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
pvVar14 = local_2e8;
|
|
if (local_2f4 == 0) {
|
|
if (((local_2e0 == 0) || (local_2e0 == 0x34)) ||
|
|
(cVar2 = FUN_100029c0(local_2e0), cVar2 != '\0')) {
|
|
FUN_10100ce0(&local_24,param_1);
|
|
(**(code **)(*local_328 + 0x14))(local_328,param_1);
|
|
iVar8 = local_2e0;
|
|
if ((local_2e0 == 0) || (local_2e0 == 0x34)) {
|
|
iVar6 = (**(code **)(*param_1 + 0xc))(param_1,&local_300,2,0);
|
|
if (iVar6 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar6,0,
|
|
"E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\BaseRuntimeComponentServer\\LoadSave.h"
|
|
,0x12);
|
|
}
|
|
if (iVar8 == 0x34) {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
uVar3 = FUN_10004010(local_308,local_304);
|
|
uVar7 = FUN_100040a0(local_300);
|
|
lVar11 = 0;
|
|
lVar12 = local_2f8;
|
|
p_Var15 = endl_exref;
|
|
uVar3 = FUN_1001db60(*(undefined4 *)(DAT_101d6474 + 0x18),local_2e8,&DAT_1017b6e4,
|
|
L"GetResponse ",0x34,L" responseCode ",0,L" correlationId ",
|
|
local_2f8,L" quality ",uVar7,L" timestamp ",uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_100a68d0(uVar3);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(uVar3);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,lVar11);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(pbVar4);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,lVar12);
|
|
uVar3 = FUN_1001a0e0(pbVar4);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
pbVar4 = (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<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_308,8,0);
|
|
goto LAB_1010c44d;
|
|
}
|
|
}
|
|
goto LAB_1010cc29;
|
|
}
|
|
if (local_2e0 != 5) {
|
|
if ((local_2e0 == 0x1f) || (local_2e0 == 0x2f)) {
|
|
FUN_10100ce0(&local_24,param_1);
|
|
FUN_10100bc0(&local_30,param_1);
|
|
iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_320,4,0);
|
|
if ((iVar8 < 0) ||
|
|
((iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_44,0x10,0), iVar8 < 0 ||
|
|
(iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_54,0x10,0), iVar8 < 0))))
|
|
goto LAB_1010c455;
|
|
puVar9 = (undefined4 *)FUN_100f6dc0();
|
|
local_354 = local_30;
|
|
local_350 = local_2c;
|
|
local_34c = local_28;
|
|
puVar10 = local_348;
|
|
for (iVar8 = 8; pvVar14 = local_2e8, iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
*puVar10 = *puVar9;
|
|
puVar9 = puVar9 + 1;
|
|
puVar10 = puVar10 + 1;
|
|
}
|
|
uVar7 = 0;
|
|
uVar3 = FUN_100fe160(&local_354);
|
|
FUN_100fdde0(&local_314,uVar3,uVar7);
|
|
if (local_314 == *(int *)((int)pvVar14 + 0x6e4)) {
|
|
local_314 = FUN_1006b760(0x8007000e);
|
|
}
|
|
*(undefined **)(local_314 + 0x18) = local_44;
|
|
*(int *)(local_314 + 0x1c) = local_40;
|
|
*(int *)(local_314 + 0x20) = local_3c;
|
|
*(int *)(local_314 + 0x24) = local_38;
|
|
*(undefined **)(local_314 + 0x28) = local_54;
|
|
*(int *)(local_314 + 0x2c) = local_50;
|
|
*(int *)(local_314 + 0x30) = local_4c;
|
|
*(int *)(local_314 + 0x34) = local_48;
|
|
param_4 = local_2e4;
|
|
LAB_1010cc29:
|
|
if ((((((local_2e0 == 1) || (local_2e0 == 4)) || (local_2e0 == 0x26)) ||
|
|
((local_2e0 == 0x28 || (local_2e0 == 0x3d)))) ||
|
|
((local_2e0 == 0x3f || ((local_2e0 == 0x35 || (local_2e0 == 0x38)))))) &&
|
|
(7999 < (short)local_18)) {
|
|
SysFreeString(local_2fc);
|
|
local_2fc = (BSTR)0x0;
|
|
SysFreeString((BSTR)0x0);
|
|
local_2fc = (BSTR)0x0;
|
|
FUN_10102c70(&local_2e4,param_1);
|
|
pOVar13 = local_2e4;
|
|
if (local_2e4 != (BSTR)0x0) {
|
|
SysFreeString((BSTR)0x0);
|
|
local_2fc = pOVar13;
|
|
}
|
|
}
|
|
goto LAB_1010ccab;
|
|
}
|
|
if ((local_2e0 == 0x20) || (local_2e0 == 0x30)) {
|
|
FUN_10100ce0(&local_24,param_1);
|
|
FUN_10100bc0(&local_30,param_1);
|
|
FUN_1005e580(&local_320,param_1);
|
|
pvVar14 = local_2e8;
|
|
FUN_100fd9c0(&local_2e4,&local_30);
|
|
if (local_2e4 == *(BSTR *)((int)pvVar14 + 0x6e4)) {
|
|
local_44 = PTR_101a21c4;
|
|
local_40 = DAT_101a21c8;
|
|
local_3c = DAT_101a21cc;
|
|
local_38 = DAT_101a21d0;
|
|
local_54 = PTR_101a21c4;
|
|
local_50 = DAT_101a21c8;
|
|
local_4c = DAT_101a21cc;
|
|
local_48 = DAT_101a21d0;
|
|
}
|
|
else {
|
|
local_44 = *(undefined **)(local_2e4 + 0xc);
|
|
local_40 = *(int *)(local_2e4 + 0xe);
|
|
local_3c = *(int *)(local_2e4 + 0x10);
|
|
local_38 = *(int *)(local_2e4 + 0x12);
|
|
local_54 = *(undefined **)(local_2e4 + 0x14);
|
|
local_50 = *(int *)(local_2e4 + 0x16);
|
|
local_4c = *(int *)(local_2e4 + 0x18);
|
|
local_48 = *(int *)(local_2e4 + 0x1a);
|
|
}
|
|
goto LAB_1010cc29;
|
|
}
|
|
if ((local_2e0 == 0xe) && (param_4 != (BSTR)0x0)) {
|
|
local_24 = CONCAT22(local_24._2_2_,0xffff);
|
|
goto LAB_1010c0f5;
|
|
}
|
|
cVar2 = FUN_100f6f20(local_2e0);
|
|
if (cVar2 == '\0') goto LAB_1010cc29;
|
|
FUN_10100ce0(&local_24,param_1);
|
|
cVar2 = FUN_100f6fe0(local_2e0);
|
|
if ((((cVar2 != '\0') && ((short)local_24 == 0)) && (local_20 == 4)) &&
|
|
((short)local_18 == 0x1f42)) {
|
|
local_2e9 = '\x01';
|
|
}
|
|
(**(code **)(*local_328 + 0x14))(local_328,param_1);
|
|
if (7999 < (short)local_18) {
|
|
SysFreeString((BSTR)0x0);
|
|
local_2fc = (BSTR)0x0;
|
|
FUN_10102ce0(&local_2fc,param_1);
|
|
}
|
|
FUN_100860c0(local_2f0,local_2f0,local_328,local_300,local_308,local_304,&local_24,local_2fc,1
|
|
,local_2f8);
|
|
SysFreeString(local_2fc);
|
|
local_2fc = (BSTR)0x0;
|
|
if (local_2e0 != 0x17) {
|
|
FUN_10100ce0(&local_24,param_1);
|
|
(**(code **)(*local_328 + 0x14))(local_328,param_1);
|
|
if (((local_2e0 == 0x18) || (local_2e0 == 0x39)) &&
|
|
(FUN_1005e550(&local_300,param_1), local_2e0 == 0x39)) {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
uVar3 = FUN_10004010(local_308,local_304);
|
|
uVar7 = FUN_100040a0(local_300);
|
|
lVar11 = 0;
|
|
lVar12 = local_2f8;
|
|
p_Var15 = endl_exref;
|
|
uVar3 = FUN_1001db60(*(undefined4 *)(DAT_101d6474 + 0x18),local_2e8,&DAT_1017b6e4,
|
|
L"GetResponse ",0x39,L" responseCode ",0,L" correlationId ",
|
|
local_2f8,L" quality ",uVar7,L" timestamp ",uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_100a68d0(uVar3);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(uVar3);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,lVar11);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(pbVar4);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,lVar12);
|
|
uVar3 = FUN_1001a0e0(pbVar4);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
pbVar4 = (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<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
FUN_101006e0(&local_308,param_1);
|
|
goto LAB_1010ccf0;
|
|
}
|
|
if ((((local_2e0 == 0x19) || (local_2e0 == 0x1a)) ||
|
|
((local_2e0 == 0x2a || (local_2e0 == 0x2b)))) && (7999 < (short)local_18)) {
|
|
SysFreeString((BSTR)0x0);
|
|
local_2fc = (BSTR)0x0;
|
|
FUN_10102ce0(&local_2fc,param_1);
|
|
}
|
|
goto LAB_1010cc29;
|
|
}
|
|
local_2e4 = (BSTR)0x0;
|
|
FUN_10100e20(&local_2e4);
|
|
FUN_10100ce0(&local_24,param_1);
|
|
FUN_10100bc0(&local_30,param_1);
|
|
FUN_1005e580(&local_320,param_1);
|
|
cVar2 = FUN_100408d0();
|
|
pOVar13 = local_2e4;
|
|
if (cVar2 != '\0') {
|
|
p_Var15 = endl_exref;
|
|
uVar3 = FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x18),
|
|
L" - Nested subscribe response type is ",local_2e4,L" from ",&local_30
|
|
);
|
|
uVar3 = FUN_100a68d0(uVar3);
|
|
uVar3 = FUN_1001a0e0(uVar3);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001db00(uVar3);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
pvVar14 = local_2e8;
|
|
if ((pOVar13 == (BSTR)0x1f) || (pOVar13 == (BSTR)0x2f)) {
|
|
FUN_1008cf70(&local_44,param_1);
|
|
FUN_1008cf70(&local_54,param_1);
|
|
puVar9 = (undefined4 *)FUN_100f6dc0();
|
|
local_354 = local_30;
|
|
local_350 = local_2c;
|
|
local_34c = local_28;
|
|
puVar10 = local_348;
|
|
for (iVar8 = 8; pvVar14 = local_2e8, iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
*puVar10 = *puVar9;
|
|
puVar9 = puVar9 + 1;
|
|
puVar10 = puVar10 + 1;
|
|
}
|
|
uVar7 = 0;
|
|
uVar3 = FUN_100fe160(&local_354);
|
|
FUN_100fdde0(&local_314,uVar3,uVar7);
|
|
if (local_314 == *(int *)((int)pvVar14 + 0x6e4)) {
|
|
local_314 = FUN_1006b760(0x8007000e);
|
|
}
|
|
*(undefined **)(local_314 + 0x18) = local_44;
|
|
*(int *)(local_314 + 0x1c) = local_40;
|
|
*(int *)(local_314 + 0x20) = local_3c;
|
|
*(int *)(local_314 + 0x24) = local_38;
|
|
*(undefined **)(local_314 + 0x28) = local_54;
|
|
*(int *)(local_314 + 0x2c) = local_50;
|
|
*(int *)(local_314 + 0x30) = local_4c;
|
|
*(int *)(local_314 + 0x34) = local_48;
|
|
}
|
|
else {
|
|
FUN_100fd9c0(&local_2e4,&local_30);
|
|
if (local_2e4 == *(BSTR *)((int)pvVar14 + 0x6e4)) {
|
|
local_44 = PTR_101a21c4;
|
|
local_40 = DAT_101a21c8;
|
|
local_3c = DAT_101a21cc;
|
|
local_38 = DAT_101a21d0;
|
|
local_54 = PTR_101a21c4;
|
|
local_50 = DAT_101a21c8;
|
|
local_4c = DAT_101a21cc;
|
|
local_48 = DAT_101a21d0;
|
|
}
|
|
else {
|
|
local_44 = *(undefined **)(local_2e4 + 0xc);
|
|
local_40 = *(int *)(local_2e4 + 0xe);
|
|
local_3c = *(int *)(local_2e4 + 0x10);
|
|
local_38 = *(int *)(local_2e4 + 0x12);
|
|
local_54 = *(undefined **)(local_2e4 + 0x14);
|
|
local_50 = *(int *)(local_2e4 + 0x16);
|
|
local_4c = *(int *)(local_2e4 + 0x18);
|
|
local_48 = *(int *)(local_2e4 + 0x1a);
|
|
}
|
|
}
|
|
goto LAB_1010c6ec;
|
|
}
|
|
FUN_10100ce0(&local_24,param_1);
|
|
FUN_10100bc0(&local_30,param_1);
|
|
iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_320,4,0);
|
|
if (iVar8 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar8,0,
|
|
"E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\BaseRuntimeComponentServer\\LoadSave.h"
|
|
,0x12);
|
|
}
|
|
iVar8 = (**(code **)(*param_1 + 0xc))(param_1,&local_44,0x10,0);
|
|
LAB_1010c44d:
|
|
if (iVar8 < 0) {
|
|
LAB_1010c455:
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1005bf30(iVar8,0,
|
|
"E:\\BldSrc\\6\\s\\sharedcomponents\\internal\\MagellanPublic\\Includes\\BaseRuntimeComponentServer\\LoadSave.h"
|
|
,0x12);
|
|
}
|
|
goto LAB_1010ccf0;
|
|
}
|
|
switch(local_2f4) {
|
|
case 1:
|
|
*(int *)((int)local_2e8 + 0x520) = *(int *)((int)local_2e8 + 0x520) + 1;
|
|
break;
|
|
case 2:
|
|
*(int *)((int)local_2e8 + 0x524) = *(int *)((int)local_2e8 + 0x524) + 1;
|
|
break;
|
|
case 3:
|
|
*(int *)((int)local_2e8 + 0x528) = *(int *)((int)local_2e8 + 0x528) + 1;
|
|
break;
|
|
case 4:
|
|
*(int *)((int)local_2e8 + 0x52c) = *(int *)((int)local_2e8 + 0x52c) + 1;
|
|
break;
|
|
case 5:
|
|
*(int *)((int)local_2e8 + 0x530) = *(int *)((int)local_2e8 + 0x530) + 1;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
case 9:
|
|
case 10:
|
|
case 0xb:
|
|
case 0xc:
|
|
case 0xd:
|
|
case 0xe:
|
|
case 0xf:
|
|
case 0x10:
|
|
case 0x11:
|
|
case 0x12:
|
|
case 0x13:
|
|
case 0x14:
|
|
case 0x15:
|
|
case 0x16:
|
|
case 0x17:
|
|
case 0x18:
|
|
case 0x19:
|
|
break;
|
|
case 0x1a:
|
|
*(int *)((int)local_2e8 + 0x534) = *(int *)((int)local_2e8 + 0x534) + 1;
|
|
break;
|
|
default:
|
|
goto switchD_1010bed9_default;
|
|
}
|
|
switch(local_2f4) {
|
|
case 1:
|
|
case 2:
|
|
local_31c = local_31c >> 0x10;
|
|
goto LAB_1010bf66;
|
|
case 3:
|
|
local_31c = (uint)local_31c._2_2_;
|
|
local_20 = 4;
|
|
goto LAB_1010bf6b;
|
|
case 4:
|
|
local_20 = 4;
|
|
local_31c = (uint)local_31c._2_2_ << 0x10;
|
|
local_1c = 3;
|
|
break;
|
|
case 5:
|
|
local_20 = 3;
|
|
local_31c = (uint)local_31c._2_2_ << 0x10;
|
|
local_1c = 3;
|
|
break;
|
|
default:
|
|
goto switchD_1010bed9_default;
|
|
case 0x1a:
|
|
local_31c = (uint)local_31c._2_2_;
|
|
LAB_1010bf66:
|
|
local_20 = 3;
|
|
LAB_1010bf6b:
|
|
local_31c = local_31c << 0x10;
|
|
local_1c = 2;
|
|
}
|
|
local_310 = CONCAT22(local_310._2_2_,(short)local_2f4);
|
|
local_24 = local_31c;
|
|
local_18 = local_310;
|
|
switchD_1010bed9_default:
|
|
if (local_2e0 == 3) {
|
|
if ((((short)local_24 != -1) && (local_2f0 != 0)) && (*(int *)(local_2f0 + 200) != 0)) {
|
|
FUN_10067aa0(*(int *)(local_2f0 + 200),&local_24);
|
|
}
|
|
goto LAB_1010ccf0;
|
|
}
|
|
if ((local_2e0 == 0x27) || (local_2e0 == 0x37)) {
|
|
if ((((short)local_24 != -1) &&
|
|
((local_2f0 != 0 &&
|
|
(FUN_100fd820(&local_2e4,¶m_8), local_2e4 != *(BSTR *)((int)pvVar14 + 0x20c))))) &&
|
|
(*(int *)(local_2f0 + 200) != 0)) {
|
|
FUN_10067aa0(*(int *)(local_2f0 + 200),&local_24);
|
|
}
|
|
LAB_1010ccab:
|
|
if ((local_2e0 == 0x10) || (local_2e0 == 0x11)) {
|
|
if (local_2f4 == 0) {
|
|
local_34 = CONCAT22(local_34._2_2_,0xffff);
|
|
local_28 = local_28 & 0xffff0000;
|
|
local_20 = 0;
|
|
local_24 = local_34;
|
|
local_1c = 1;
|
|
local_18 = local_28;
|
|
}
|
|
(**(code **)(*(int *)param_4 + 0x14))(local_2f8,&local_24);
|
|
goto LAB_1010d3df;
|
|
}
|
|
if ((((local_2e0 != 0x1f) && (local_2e0 != 0x2f)) && (local_2e0 != 0x20)) &&
|
|
((local_2e0 != 0x30 && (local_2e0 != 0x17)))) goto LAB_1010ccf0;
|
|
LAB_1010c6ec:
|
|
iVar8 = local_2e0;
|
|
if (local_2f0 != 0) {
|
|
FUN_10147530(&local_24,local_30,local_2c,local_28,local_320,&local_44,&local_54,local_2e0);
|
|
iVar8 = local_2e0;
|
|
}
|
|
LAB_1010c736:
|
|
pvVar14 = local_2e8;
|
|
if (((local_2f4 == 0) && (local_2f0 != 0)) && (iVar6 = *(int *)(local_2f0 + 200), iVar6 != 0)) {
|
|
if ((param_8 != 0) || (param_9 != 0)) {
|
|
FUN_100fd820(&local_2e4,¶m_8);
|
|
if (local_2e4 != *(BSTR *)((int)pvVar14 + 0x20c)) {
|
|
FUN_10067aa0(iVar6,&local_24);
|
|
}
|
|
goto LAB_1010d28a;
|
|
}
|
|
LAB_1010d2f2:
|
|
iVar8 = local_2e0;
|
|
if (local_20 != 1) {
|
|
LAB_1010d2fe:
|
|
if ((((iVar8 == 0x27) || (iVar8 == 0x2c)) || ((iVar8 == 0x37 || (iVar8 == 0x3c)))) &&
|
|
((FUN_100fd820(&local_2e4,¶m_8), local_2e4 != *(BSTR *)((int)local_2e8 + 0x20c) &&
|
|
(FUN_10036d40(&local_310,local_2e4), local_2f0 != 0)))) {
|
|
(**(code **)(*(int *)(local_2f0 + 4) + 4))();
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
LAB_1010d28a:
|
|
if ((((param_8 == 0) && (param_9 == 0)) || (local_20 == 1)) ||
|
|
(((((iVar8 != 0x26 && (iVar8 != 0x28)) &&
|
|
((iVar8 != 0x3d && ((iVar8 != 0x3f && (iVar8 != 0x35)))))) && (iVar8 != 0x38)) &&
|
|
(((((iVar8 != 0x2a && (iVar8 != 0x2b)) && (iVar8 != 0x3a)) &&
|
|
((iVar8 != 0x3b && (iVar8 != 0x3e)))) && (iVar8 != 0x40)))))) {
|
|
if (local_2f4 == 0) goto LAB_1010d2f2;
|
|
goto LAB_1010d2fe;
|
|
}
|
|
FUN_10052750(¶m_8);
|
|
}
|
|
pvVar14 = local_30c;
|
|
if ((local_2e9 == '\0') && (local_30c != (void *)0x0)) {
|
|
FUN_100a94e0();
|
|
operator_delete(pvVar14);
|
|
}
|
|
}
|
|
else {
|
|
if (local_2e0 == 0xd) {
|
|
if (param_4 == (BSTR)0x0) {
|
|
LAB_1010c10e:
|
|
cVar2 = FUN_100f6f20(local_2e0);
|
|
iVar8 = local_2f0;
|
|
if ((cVar2 != '\0') &&
|
|
(FUN_100860c0(local_2f0,local_2f0,local_328,local_300,local_308,local_304,&local_24,0,1,
|
|
local_2f8), local_2e0 != 0x17)) {
|
|
if ((local_2e0 == 0x18) || (local_2e0 == 0x39)) {
|
|
cVar2 = '\0';
|
|
}
|
|
else {
|
|
cVar2 = '\x01';
|
|
}
|
|
local_2e4 = (BSTR)CONCAT31(local_2e4._1_3_,cVar2);
|
|
if ((((local_30c == (void *)0x0) && (cVar2 == '\0')) || (local_20 != 4)) ||
|
|
((local_2e0 != 0x2a && (local_2e0 != 0x19)))) {
|
|
FUN_100860c0(iVar8,param_4,local_328,local_300,local_308,local_304,&local_24,0,local_2e4
|
|
,local_2f8);
|
|
if (((short)local_24 != -1) &&
|
|
((((local_2e0 == 0x1b || (local_2e0 == 0x2c)) || (local_2e0 == 0x3c)) &&
|
|
((iVar8 != 0 && (*(int *)(iVar8 + 200) != 0)))))) {
|
|
FUN_10067aa0(*(int *)(iVar8 + 200),&local_24);
|
|
}
|
|
}
|
|
else if ((local_30c == (void *)0x0) && (local_2e9 = '\x01', iVar8 != 0)) {
|
|
FUN_1003ef70(iVar8);
|
|
}
|
|
}
|
|
goto LAB_1010ccab;
|
|
}
|
|
iVar8 = *(int *)((int)local_2e8 + 1000);
|
|
local_2e4 = param_4;
|
|
piVar5 = (int *)FUN_100fd880(&local_310,&local_2e4);
|
|
if (*piVar5 == iVar8) {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
pvVar14 = local_2e8;
|
|
p_Var15 = endl_exref;
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
|
|
L"AccessManager::ProcessNmxResponse - failed to find local platform resolver "
|
|
);
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,pvVar14);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
}
|
|
else {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
pOVar13 = param_4;
|
|
p_Var15 = endl_exref;
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x38),
|
|
L"AccessManager::ProcessNmxResponse - calling local platform resolver "
|
|
,param_4,L" callback ");
|
|
pbVar4 = std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,pOVar13);
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(pbVar4);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::operator<<
|
|
(pbVar4,p_Var15);
|
|
}
|
|
(**(code **)(*(int *)param_4 + 8))(0,0,0xffffffff,DAT_101d6504,DAT_101d6508,&local_24,0);
|
|
}
|
|
}
|
|
else {
|
|
if ((local_2e0 != 0xe) || (param_4 == (BSTR)0x0)) goto LAB_1010c10e;
|
|
LAB_1010c0f5:
|
|
(**(code **)(*(int *)param_4 + 0x14))(local_2f8,&local_24);
|
|
}
|
|
LAB_1010ccf0:
|
|
iVar8 = local_2e0;
|
|
cVar2 = FUN_100f6ef0(local_2e0);
|
|
if ((cVar2 == '\0') && (cVar2 = FUN_100f6f80(iVar8), cVar2 == '\0')) {
|
|
if (iVar8 == 9) {
|
|
if (param_4 != (BSTR)0x0) {
|
|
if (local_2f4 == 0) {
|
|
FUN_10100ce0(&local_24,param_1);
|
|
(**(code **)(*(int *)param_4 + 0xc))((short)local_24 == -1,&local_24);
|
|
}
|
|
else if (local_2f4 == 0x1a) {
|
|
(**(code **)(*(int *)param_4 + 0xc))(1,&local_24);
|
|
}
|
|
else {
|
|
(**(code **)(*(int *)param_4 + 0xc))(0,&local_24);
|
|
}
|
|
}
|
|
}
|
|
else if (iVar8 == 8) {
|
|
if (param_4 != (BSTR)0x0) {
|
|
if (local_2f4 == 0) {
|
|
local_34 = CONCAT22(local_34._2_2_,0xffff);
|
|
local_28 = local_28 & 0xffff0000;
|
|
local_20 = 0;
|
|
local_24 = local_34;
|
|
local_1c = 1;
|
|
local_18 = local_28;
|
|
}
|
|
(**(code **)(*(int *)param_4 + 0x14))(local_2f8,&local_24);
|
|
}
|
|
}
|
|
else if (iVar8 == 0x24) {
|
|
if (param_4 != (BSTR)0x0) {
|
|
if (local_2f4 == 0) {
|
|
local_34 = CONCAT22(local_34._2_2_,0xffff);
|
|
local_28 = (uint)local_28._2_2_ << 0x10;
|
|
local_20 = 0;
|
|
local_24 = local_34;
|
|
local_1c = 1;
|
|
local_18 = local_28;
|
|
}
|
|
(**(code **)(*(int *)param_4 + 0x14))(local_2f8,&local_24);
|
|
}
|
|
}
|
|
else if (iVar8 == 0x14) {
|
|
if (param_4 != (BSTR)0x0) {
|
|
if (local_2f4 == 0x1a) {
|
|
(**(code **)(*(int *)param_4 + 0xc))(1);
|
|
}
|
|
else {
|
|
(**(code **)(*(int *)param_4 + 0xc))(local_2f4 == 0,&local_24);
|
|
}
|
|
}
|
|
}
|
|
else if (((iVar8 == 0x1d) || (iVar8 == 0x1e)) && (param_4 != (BSTR)0x0)) {
|
|
iVar6 = *(int *)param_4;
|
|
if (local_2f4 == 0x1a) {
|
|
(**(code **)(iVar6 + 0xc))(1);
|
|
}
|
|
else {
|
|
LAB_1010cec6:
|
|
(**(code **)(iVar6 + 0xc))(local_2f4 == 0,&local_24);
|
|
}
|
|
}
|
|
else if (((iVar8 == 0x32) || (iVar8 == 0x33)) && (param_4 != (BSTR)0x0)) {
|
|
iVar6 = *(int *)param_4;
|
|
if (local_2f4 != 0x1a) goto LAB_1010cec6;
|
|
(**(code **)(iVar6 + 0xc))(1,&local_24);
|
|
}
|
|
else if (iVar8 == 0x25) {
|
|
if (param_4 != (BSTR)0x0) {
|
|
if (local_2f4 == 0) {
|
|
local_34 = CONCAT22(local_34._2_2_,0xffff);
|
|
local_28 = (uint)local_28._2_2_ << 0x10;
|
|
local_20 = 0;
|
|
local_24 = local_34;
|
|
local_1c = 1;
|
|
local_18 = local_28;
|
|
}
|
|
(**(code **)(*(int *)param_4 + 0x14))(local_2f8,&local_24);
|
|
}
|
|
}
|
|
else if ((iVar8 == 0x2d) || (iVar8 == 0x2e)) {
|
|
if (local_2f4 != 0) {
|
|
puVar9 = &local_24;
|
|
}
|
|
else {
|
|
puVar9 = &local_34;
|
|
}
|
|
FUN_1010b990(local_2f4 != 0,puVar9,param_1);
|
|
}
|
|
LAB_1010cf4e:
|
|
if (local_2e9 == '\0') {
|
|
LAB_1010cf5b:
|
|
iVar1 = local_20;
|
|
iVar6 = local_2f0;
|
|
if (((local_20 == 3) || (local_20 == 4)) && (local_2f0 != 0)) {
|
|
cVar2 = FUN_100029c0(iVar8);
|
|
if (((cVar2 == '\0') && (cVar2 = FUN_100f6fe0(iVar8), cVar2 == '\0')) ||
|
|
((*(char *)(iVar6 + 0x1bd) == '\0' || (iVar1 != 3)))) {
|
|
FUN_1013f750(&local_24);
|
|
}
|
|
else {
|
|
cVar2 = FUN_100408d0();
|
|
if (cVar2 != '\0') {
|
|
p_Var15 = endl_exref;
|
|
pbVar4 = (basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_> *)
|
|
FUN_1001a0e0(*(undefined4 *)(DAT_101d6474 + 0x18),
|
|
L"AccessManager::ProcessNmxResponse - will SKIP referenceWentBad call"
|
|
);
|
|
std::basic_ostream<unsigned_short,struct_std::char_traits<unsigned_short>_>::
|
|
operator<<(pbVar4,p_Var15);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
goto LAB_1010c736;
|
|
}
|
|
if (local_2e9 != '\0') {
|
|
if (local_30c != (void *)0x0) {
|
|
FUN_10040fe0(&local_30c);
|
|
goto LAB_1010cf4e;
|
|
}
|
|
cVar2 = FUN_100029c0(iVar8);
|
|
if (cVar2 == '\0') {
|
|
cVar2 = FUN_100f6fe0(iVar8);
|
|
local_2e4 = (BSTR)((uint)local_2e4 & 0xffffff00);
|
|
if (cVar2 != '\0') goto LAB_1010d04d;
|
|
}
|
|
else {
|
|
LAB_1010d04d:
|
|
local_2e4 = (BSTR)CONCAT31(local_2e4._1_3_,1);
|
|
}
|
|
local_34 = (uint)local_34._2_2_ << 0x10;
|
|
local_28 = CONCAT22(local_28._2_2_,0x1f42);
|
|
local_30 = 4;
|
|
local_2c = 1;
|
|
FUN_100860c0(local_2f0,param_4,local_328,local_300,local_308,local_304,&local_34,local_2fc,
|
|
local_2e4,local_2f8);
|
|
goto LAB_1010cf4e;
|
|
}
|
|
if (((local_30c == (void *)0x0) || (local_20 != 4)) || (7999 < (short)local_18)) {
|
|
cVar2 = FUN_100029c0(iVar8);
|
|
if ((cVar2 == '\0') && (cVar2 = FUN_100f6fe0(iVar8), cVar2 == '\0')) {
|
|
local_2e4 = (BSTR)((uint)local_2e4 & 0xffffff00);
|
|
}
|
|
else {
|
|
local_2e4 = (BSTR)CONCAT31(local_2e4._1_3_,1);
|
|
if (param_4 != (BSTR)0x0) {
|
|
(**(code **)(*(int *)param_4 + 0x18))();
|
|
}
|
|
}
|
|
if ((iVar8 != 0x39) || (local_2f4 == 0)) {
|
|
FUN_100860c0(local_2f0,param_4,local_328,local_300,local_308,local_304,&local_24,local_2fc,
|
|
local_2e4,local_2f8);
|
|
}
|
|
goto LAB_1010cf5b;
|
|
}
|
|
if (local_2f0 == 0) goto LAB_1010c736;
|
|
if ((((param_8 != 0) || (iVar6 = local_2f0, param_9 != 0)) &&
|
|
(FUN_100fd820(&local_2e4,¶m_8), iVar6 = local_2f0,
|
|
local_2e4 != *(BSTR *)((int)local_2e8 + 0x20c))) &&
|
|
(((FUN_10036d40(&local_310,local_2e4), iVar6 = local_2f0, iVar8 == 0x27 || (iVar8 == 0x2c))
|
|
|| ((iVar8 == 0x37 || (iVar8 == 0x3c)))))) {
|
|
(**(code **)(*(int *)(local_2f0 + 4) + 4))();
|
|
}
|
|
cVar2 = FUN_1009f970();
|
|
if ((cVar2 == '\0') && (*(int *)(iVar6 + 0xa4) != 7)) {
|
|
FUN_1003ef70(iVar6);
|
|
}
|
|
else {
|
|
*(undefined1 *)((int)local_30c + 0x44) = 1;
|
|
}
|
|
FUN_10040fe0(&local_30c);
|
|
if (*(int *)(iVar6 + 200) != 0) {
|
|
local_34 = CONCAT22(local_34._2_2_,0xffff);
|
|
local_28 = local_28 & 0xffff0000;
|
|
local_30 = 1;
|
|
local_2c = 0;
|
|
FUN_10067aa0(*(int *)(iVar6 + 200),&local_34);
|
|
}
|
|
}
|
|
if (local_2f0 != 0) {
|
|
(**(code **)(*(int *)(local_2f0 + 4) + 4))();
|
|
}
|
|
LAB_1010d3df:
|
|
local_8 = local_8 & 0xffffff00;
|
|
SysFreeString(local_2fc);
|
|
local_8 = 0xffffffff;
|
|
if (local_328 != (int *)0x0) {
|
|
(**(code **)(*local_328 + 8))(local_328);
|
|
}
|
|
SysFreeString(local_324);
|
|
ExceptionList = local_10;
|
|
__security_check_cookie(local_14 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|
|
## FUN_1010e410 at 1010e410
|
|
|
|
Signature: `undefined FUN_1010e410(void)`
|
|
|
|
```c
|
|
|
|
void FUN_1010e410(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)
|
|
|
|
{
|
|
undefined4 local_18;
|
|
undefined4 local_14;
|
|
undefined4 local_10;
|
|
undefined4 local_c;
|
|
uint local_8;
|
|
|
|
local_8 = DAT_101d60b8 ^ (uint)&stack0xfffffffc;
|
|
local_18 = param_1;
|
|
local_10 = param_3;
|
|
local_14 = param_2;
|
|
local_c = param_4;
|
|
FUN_1010b990(1,&local_18,0);
|
|
__security_check_cookie(local_8 ^ (uint)&stack0xfffffffc);
|
|
return;
|
|
}
|
|
|
|
|
|
```
|
|
|