273 lines
8.5 KiB
C
273 lines
8.5 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x1400b1270 FUN_1400b1270
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b167c) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b168b) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b1690) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16ce) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16a0) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16bf) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16b1) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16c7) */
|
|
/* WARNING: Removing unreachable block (ram,0x0001400b16cc) */
|
|
|
|
undefined8 FUN_1400b1270(undefined8 *param_1,LPCWSTR param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
longlong lVar2;
|
|
undefined8 *puVar3;
|
|
undefined8 *puVar4;
|
|
undefined2 *puVar5;
|
|
undefined8 *puVar6;
|
|
undefined8 *puVar7;
|
|
DWORD DVar8;
|
|
BOOL BVar9;
|
|
undefined **ppuVar10;
|
|
undefined8 *puVar11;
|
|
int *piVar12;
|
|
int *piVar13;
|
|
undefined4 extraout_var;
|
|
ulonglong uVar14;
|
|
undefined *puVar15;
|
|
wchar_t *pwVar16;
|
|
undefined4 extraout_var_00;
|
|
undefined4 extraout_var_01;
|
|
undefined4 extraout_var_02;
|
|
longlong *plVar17;
|
|
undefined **ppuVar18;
|
|
undefined8 uVar19;
|
|
undefined2 *lpBuffer;
|
|
undefined *puVar20;
|
|
undefined8 *puVar21;
|
|
undefined8 *puVar22;
|
|
undefined *puVar23;
|
|
int iVar24;
|
|
undefined8 uVar25;
|
|
undefined8 uVar26;
|
|
undefined8 **lpNumberOfBytesWritten;
|
|
undefined8 *local_res8;
|
|
LPCWSTR local_res10;
|
|
undefined2 local_res18 [4];
|
|
undefined8 *local_res20;
|
|
undefined2 *local_118;
|
|
undefined8 *local_110;
|
|
undefined8 *local_108;
|
|
undefined8 *local_100;
|
|
undefined8 *local_f8;
|
|
int *local_f0;
|
|
undefined8 local_e8;
|
|
int *local_e0;
|
|
undefined1 local_d8;
|
|
undefined8 local_d0;
|
|
__time64_t local_c8;
|
|
longlong local_c0;
|
|
undefined *local_b8;
|
|
int local_b0;
|
|
__time64_t local_a8;
|
|
int *local_a0;
|
|
undefined1 local_98;
|
|
int *local_90;
|
|
undefined1 local_88;
|
|
undefined8 local_80;
|
|
int *local_78;
|
|
undefined1 local_70;
|
|
undefined *local_68 [5];
|
|
|
|
local_80 = 0xfffffffffffffffe;
|
|
local_res8 = param_1;
|
|
local_res10 = param_2;
|
|
local_e0 = (int *)(**(code **)(param_1[-0xe] + 0x58))();
|
|
FUN_14006b350(local_e0);
|
|
puVar6 = local_res8;
|
|
local_d8 = 1;
|
|
puVar21 = (undefined8 *)0x0;
|
|
local_110 = (undefined8 *)0x0;
|
|
local_f8 = (undefined8 *)0x0;
|
|
local_108 = (undefined8 *)0x0;
|
|
local_100 = (undefined8 *)0x0;
|
|
lVar2 = param_1[0x2eb];
|
|
puVar3 = puVar21;
|
|
puVar4 = puVar21;
|
|
puVar11 = local_110;
|
|
while (local_110 = puVar11, lVar2 != 0) {
|
|
ppuVar18 = local_68;
|
|
ppuVar10 = (undefined **)FUN_1400ae1d0(param_1 + 0x2e8,(longlong *)ppuVar18,param_3,param_4);
|
|
plVar17 = (longlong *)0x28;
|
|
puVar11 = (undefined8 *)FUN_14006cbf0(0x28);
|
|
local_res8 = puVar11;
|
|
local_res20 = puVar11;
|
|
if (puVar11 != (undefined8 *)0x0) {
|
|
FUN_14006cb70(plVar17,ppuVar18,param_3,param_4);
|
|
puVar11[2] = PTR_DAT_1401ac010;
|
|
plVar17 = puVar11 + 2;
|
|
ppuVar18 = ppuVar10;
|
|
FUN_140003110(plVar17,(longlong *)ppuVar10,param_3,param_4);
|
|
*(undefined4 *)(puVar11 + 3) = *(undefined4 *)(ppuVar10 + 1);
|
|
puVar11[4] = ppuVar10[2];
|
|
}
|
|
puVar15 = local_68[0];
|
|
puVar11[1] = puVar3;
|
|
*puVar11 = 0;
|
|
puVar21 = (undefined8 *)((longlong)puVar21 + 1);
|
|
puVar22 = puVar11;
|
|
puVar7 = puVar11;
|
|
if (puVar3 != (undefined8 *)0x0) {
|
|
*puVar3 = puVar11;
|
|
puVar22 = puVar4;
|
|
puVar7 = local_108;
|
|
}
|
|
local_108 = puVar7;
|
|
local_100 = puVar11;
|
|
local_f8 = puVar21;
|
|
if (((local_68[0] != (undefined *)0x0) && (local_68[0] != PTR_DAT_1401ac010)) &&
|
|
(puVar20 = local_68[0] + -8, puVar20 != (undefined *)0x0)) {
|
|
piVar12 = (int *)FUN_14006cb70(plVar17,ppuVar18,param_3,param_4);
|
|
local_90 = piVar12;
|
|
FUN_14006b350(piVar12);
|
|
local_88 = 1;
|
|
piVar13 = (int *)(puVar15 + -4);
|
|
*piVar13 = *piVar13 + -1;
|
|
if (*piVar13 == 0) {
|
|
FUN_14006cc60(puVar20);
|
|
}
|
|
FUN_14006b3e0((longlong)piVar12);
|
|
local_88 = 0;
|
|
}
|
|
param_1 = puVar6;
|
|
puVar3 = puVar11;
|
|
puVar4 = puVar22;
|
|
puVar11 = local_110;
|
|
lVar2 = puVar6[0x2eb];
|
|
}
|
|
FUN_14006b3e0((longlong)local_e0);
|
|
local_d8 = 0;
|
|
local_f0 = (int *)0x0;
|
|
local_e8 = 0;
|
|
uVar26 = 0;
|
|
uVar19 = 0x40000000;
|
|
uVar25 = 1;
|
|
piVar13 = CreateFileW(local_res10,0x40000000,1,(LPSECURITY_ATTRIBUTES)0x0,2,0x80,(HANDLE)0x0);
|
|
piVar12 = piVar13;
|
|
if (piVar13 == (int *)0xffffffffffffffff) {
|
|
DVar8 = FUN_1400a0200();
|
|
uVar14 = CONCAT44(extraout_var,DVar8);
|
|
piVar13 = (int *)0x0;
|
|
piVar12 = local_f0;
|
|
if ((int)DVar8 < 0) {
|
|
while( true ) {
|
|
if (puVar21 == (undefined8 *)0x0) {
|
|
return uVar14 & 0xffffffffffffff00;
|
|
}
|
|
if (puVar4 == (undefined8 *)0x0) break;
|
|
puVar3 = (undefined8 *)*puVar4;
|
|
FUN_1400031e0(puVar4 + 2,uVar19,uVar25,uVar26);
|
|
uVar14 = FUN_14006cc60(puVar4);
|
|
puVar21 = (undefined8 *)((longlong)puVar21 + -1);
|
|
puVar4 = puVar3;
|
|
}
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400064e0(0x80004005);
|
|
}
|
|
}
|
|
local_f0 = piVar12;
|
|
local_d0 = 0;
|
|
DVar8 = SetFilePointer(piVar13,0,(PLONG)((longlong)&local_d0 + 4),0);
|
|
if (DVar8 == 0xffffffff) {
|
|
FUN_1400a0200();
|
|
}
|
|
local_res18[0] = 0xfeff;
|
|
lpNumberOfBytesWritten = &local_res8;
|
|
uVar14 = 2;
|
|
lpBuffer = local_res18;
|
|
piVar12 = piVar13;
|
|
BVar9 = WriteFile(piVar13,lpBuffer,2,(LPDWORD)lpNumberOfBytesWritten,(LPOVERLAPPED)0x0);
|
|
if (BVar9 == 0) {
|
|
FUN_1400a0200();
|
|
}
|
|
puVar15 = FUN_14006cb70(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
|
|
local_118 = (undefined2 *)PTR_DAT_1401ac010;
|
|
puVar5 = (undefined2 *)PTR_DAT_1401ac010;
|
|
while (puVar21 != (undefined8 *)0x0) {
|
|
FUN_1400ae1d0((longlong *)&local_110,(longlong *)&local_b8,uVar14,lpNumberOfBytesWritten);
|
|
local_c8 = local_a8;
|
|
plVar17 = FUN_1400b0130(&local_c8,&local_c0,L"%#c");
|
|
lVar2 = *plVar17;
|
|
pwVar16 = FUN_1400d9a00(local_b0);
|
|
FUN_140053d20((longlong *)&local_118,L"[%s] [%s] %s\r\n",pwVar16,lVar2);
|
|
LOCK();
|
|
piVar13 = (int *)(local_c0 + -8);
|
|
iVar24 = *piVar13;
|
|
*piVar13 = *piVar13 + -1;
|
|
UNLOCK();
|
|
if (iVar24 + -1 < 1) {
|
|
(**(code **)(**(longlong **)(local_c0 + -0x18) + 8))();
|
|
}
|
|
piVar13 = local_f0;
|
|
puVar5 = local_118;
|
|
iVar24 = 0;
|
|
lpBuffer = (undefined2 *)PTR_DAT_1401ac010;
|
|
if (local_118 != (undefined2 *)0x0) {
|
|
piVar12 = (int *)0x0;
|
|
if (local_118 != (undefined2 *)PTR_DAT_1401ac010) {
|
|
piVar12 = (int *)(ulonglong)*(uint *)(local_118 + -4);
|
|
}
|
|
iVar24 = (int)piVar12;
|
|
lpBuffer = local_118;
|
|
}
|
|
uVar14 = (ulonglong)(uint)(iVar24 * 2);
|
|
lpNumberOfBytesWritten = &local_res20;
|
|
piVar12 = local_f0;
|
|
BVar9 = WriteFile(local_f0,lpBuffer,iVar24 * 2,(LPDWORD)lpNumberOfBytesWritten,(LPOVERLAPPED)0x0
|
|
);
|
|
puVar15 = (undefined *)CONCAT44(extraout_var_00,BVar9);
|
|
if (BVar9 == 0) {
|
|
DVar8 = FUN_1400a0200();
|
|
puVar15 = (undefined *)CONCAT44(extraout_var_01,DVar8);
|
|
}
|
|
puVar20 = local_b8;
|
|
puVar11 = local_110;
|
|
puVar21 = local_f8;
|
|
if (((local_b8 != (undefined *)0x0) && (local_b8 != PTR_DAT_1401ac010)) &&
|
|
(puVar23 = local_b8 + -8, puVar23 != (undefined *)0x0)) {
|
|
piVar12 = (int *)FUN_14006cb70(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
|
|
local_a0 = piVar12;
|
|
FUN_14006b350(piVar12);
|
|
local_98 = 1;
|
|
piVar1 = (int *)(puVar20 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14006cc60(puVar23);
|
|
}
|
|
puVar15 = (undefined *)FUN_14006b3e0((longlong)piVar12);
|
|
local_98 = 0;
|
|
puVar11 = local_110;
|
|
puVar21 = local_f8;
|
|
}
|
|
}
|
|
if (piVar13 != (int *)0x0) {
|
|
BVar9 = CloseHandle(piVar13);
|
|
puVar15 = (undefined *)CONCAT44(extraout_var_02,BVar9);
|
|
local_f0 = (int *)0x0;
|
|
piVar12 = piVar13;
|
|
}
|
|
if (((puVar5 != (undefined2 *)0x0) && (puVar5 != (undefined2 *)PTR_DAT_1401ac010)) &&
|
|
(puVar5 + -4 != (undefined2 *)0x0)) {
|
|
piVar12 = (int *)FUN_14006cb70(piVar12,lpBuffer,uVar14,lpNumberOfBytesWritten);
|
|
local_78 = piVar12;
|
|
FUN_14006b350(piVar12);
|
|
local_70 = 1;
|
|
piVar13 = (int *)(puVar5 + -2);
|
|
*piVar13 = *piVar13 + -1;
|
|
if (*piVar13 == 0) {
|
|
FUN_14006cc60(puVar5 + -4);
|
|
}
|
|
puVar15 = (undefined *)FUN_14006b3e0((longlong)piVar12);
|
|
}
|
|
if (puVar11 != (undefined8 *)0x0) {
|
|
puVar15 = (undefined *)(**(code **)*puVar11)(puVar11,1);
|
|
}
|
|
return CONCAT71((int7)((ulonglong)puVar15 >> 8),1);
|
|
}
|
|
|