147 lines
5.2 KiB
C
147 lines
5.2 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x140009b10 FUN_140009b10
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
undefined8 FUN_140009b10(longlong *param_1,wchar_t *param_2,ulonglong param_3,undefined8 param_4)
|
|
|
|
{
|
|
longlong lVar1;
|
|
undefined *puVar2;
|
|
ulonglong uVar3;
|
|
int *piVar4;
|
|
int *piVar5;
|
|
undefined8 uVar6;
|
|
uint7 extraout_var;
|
|
undefined **ppuVar7;
|
|
int *piVar8;
|
|
undefined8 *puVar9;
|
|
wchar_t *pwVar10;
|
|
undefined *puVar11;
|
|
uint uVar12;
|
|
longlong lVar13;
|
|
undefined1 auStack_e8 [32];
|
|
int *local_c8;
|
|
undefined1 local_c0;
|
|
int *local_b8;
|
|
undefined1 local_b0;
|
|
int *local_a8;
|
|
undefined1 local_a0;
|
|
undefined8 local_98;
|
|
undefined *local_88;
|
|
undefined2 local_80;
|
|
undefined4 local_7c;
|
|
undefined4 local_78;
|
|
undefined4 local_74;
|
|
undefined4 local_70;
|
|
undefined8 local_68 [6];
|
|
ulonglong local_38;
|
|
|
|
local_98 = 0xfffffffffffffffe;
|
|
uVar3 = DAT_1401ac5a0 ^ (ulonglong)auStack_e8;
|
|
uVar12 = 0;
|
|
if (0 < DAT_1401bcf24) {
|
|
lVar13 = 0;
|
|
local_38 = uVar3;
|
|
do {
|
|
if (*(longlong *)(*param_1 + lVar13) != 0) {
|
|
lVar1 = *(longlong *)(*param_1 + lVar13);
|
|
if (*(longlong *)(lVar1 + 0x10) == 0) {
|
|
pwVar10 = L"ERROR >> MagiCommonSession::Connect2 | m_NetClient is null!";
|
|
LAB_140009d4b:
|
|
FUN_14000aa90(4,pwVar10,param_3,param_4);
|
|
}
|
|
else {
|
|
puVar2 = *(undefined **)(lVar1 + 0x30);
|
|
if (((puVar2 == (undefined *)0x0) || (puVar2 == PTR_DAT_1401ac010)) ||
|
|
(*(int *)(puVar2 + -8) < 1)) {
|
|
pwVar10 = L"ERROR >> MagiCommonSession::Connect2 | m_Address is empty!";
|
|
goto LAB_140009d4b;
|
|
}
|
|
if (*(char *)(lVar1 + 0x18) == '\0') {
|
|
pwVar10 = L"ERROR >> MagiCommonSession::Connect2 | IsUse is false!";
|
|
goto LAB_140009d4b;
|
|
}
|
|
if (*(char *)(lVar1 + 0x19) == '\x01') {
|
|
do {
|
|
Sleep(10);
|
|
param_2 = (wchar_t *)0x0;
|
|
uVar3 = (**(code **)(**(longlong **)(lVar1 + 0x10) + 0x98))();
|
|
} while (*(char *)(lVar1 + 0x19) != '\0');
|
|
if (*(char *)(lVar1 + 0x1a) == '\x01') goto LAB_140009d69;
|
|
}
|
|
ppuVar7 = &local_88;
|
|
FUN_1400780f0(ppuVar7,param_2,param_3,param_4);
|
|
local_7c = DAT_1401bcff0;
|
|
local_78 = _DAT_1401bcff4;
|
|
local_74 = _DAT_1401bcff8;
|
|
local_70 = _DAT_1401bcffc;
|
|
if (local_88 == (undefined *)0x0) {
|
|
local_88 = PTR_DAT_1401ac010;
|
|
}
|
|
if (*(undefined **)(lVar1 + 0x30) != local_88) {
|
|
piVar4 = (int *)FUN_14006cb70(ppuVar7,param_2,param_3,param_4);
|
|
piVar8 = piVar4;
|
|
local_c8 = piVar4;
|
|
FUN_14006b350(piVar4);
|
|
puVar2 = local_88;
|
|
local_c0 = 1;
|
|
if (((local_88 != (undefined *)0x0) && (local_88 != PTR_DAT_1401ac010)) &&
|
|
(puVar11 = local_88 + -8, puVar11 != (undefined *)0x0)) {
|
|
piVar5 = (int *)FUN_14006cb70(piVar8,param_2,param_3,param_4);
|
|
local_a8 = piVar5;
|
|
FUN_14006b350(piVar5);
|
|
local_a0 = 1;
|
|
piVar8 = (int *)(puVar2 + -4);
|
|
*piVar8 = *piVar8 + -1;
|
|
if (*piVar8 == 0) {
|
|
FUN_14006cc60(puVar11);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar5);
|
|
local_a0 = 0;
|
|
}
|
|
local_88 = *(undefined **)(lVar1 + 0x30);
|
|
if (((local_88 != PTR_DAT_1401ac010) && (local_88 != (undefined *)0x0)) &&
|
|
(local_88 != (undefined *)0x8)) {
|
|
*(int *)(local_88 + -4) = *(int *)(local_88 + -4) + 1;
|
|
}
|
|
FUN_14006b3e0((longlong)piVar4);
|
|
local_c0 = 0;
|
|
}
|
|
local_80 = *(undefined2 *)(lVar1 + 0x38);
|
|
param_2 = (wchar_t *)&local_88;
|
|
uVar6 = FUN_140002310(lVar1,param_2,param_3,param_4);
|
|
puVar9 = local_68;
|
|
uVar3 = FUN_140078360(puVar9);
|
|
puVar2 = local_88;
|
|
if (((local_88 != (undefined *)0x0) && (local_88 != PTR_DAT_1401ac010)) &&
|
|
(puVar11 = local_88 + -8, puVar11 != (undefined *)0x0)) {
|
|
piVar4 = (int *)FUN_14006cb70(puVar9,param_2,param_3,param_4);
|
|
local_b8 = piVar4;
|
|
FUN_14006b350(piVar4);
|
|
local_b0 = 1;
|
|
piVar8 = (int *)(puVar2 + -4);
|
|
*piVar8 = *piVar8 + -1;
|
|
if (*piVar8 == 0) {
|
|
FUN_14006cc60(puVar11);
|
|
}
|
|
uVar3 = FUN_14006b3e0((longlong)piVar4);
|
|
local_b0 = 0;
|
|
}
|
|
if ((char)uVar6 != '\0') goto LAB_140009d69;
|
|
}
|
|
param_3 = (ulonglong)uVar12;
|
|
param_2 = L"ERROR >> DBC CONNECTION FAILED - [%d]";
|
|
FUN_14000aa90(0xc,L"ERROR >> DBC CONNECTION FAILED - [%d]",param_3,param_4);
|
|
uVar3 = (ulonglong)extraout_var << 8;
|
|
}
|
|
LAB_140009d69:
|
|
uVar12 = uVar12 + 1;
|
|
lVar13 = lVar13 + 8;
|
|
} while ((int)uVar12 < DAT_1401bcf24);
|
|
}
|
|
return CONCAT71((int7)(uVar3 >> 8),1);
|
|
}
|
|
|