decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
307
decomp/MessageServer_Release_x64/full/functions/0x1400ca320.c
Normal file
307
decomp/MessageServer_Release_x64/full/functions/0x1400ca320.c
Normal file
|
|
@ -0,0 +1,307 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400ca320 FUN_1400ca320
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
void FUN_1400ca320(IMAGE_DOS_HEADER *param_1,undefined8 param_2,IMAGE_DOS_HEADER *param_3,
|
||||
IMAGE_DOS_HEADER *param_4)
|
||||
|
||||
{
|
||||
int *piVar1;
|
||||
byte bVar2;
|
||||
uint uVar3;
|
||||
short *psVar4;
|
||||
bool bVar5;
|
||||
HANDLE hThread;
|
||||
undefined8 uVar6;
|
||||
IMAGE_DOS_HEADER *pIVar7;
|
||||
IMAGE_DOS_HEADER *pIVar8;
|
||||
int *piVar9;
|
||||
longlong lVar10;
|
||||
IMAGE_DOS_HEADER *pIVar11;
|
||||
IMAGE_DOS_HEADER *pIVar12;
|
||||
int iVar13;
|
||||
undefined4 *puVar15;
|
||||
ulonglong uVar16;
|
||||
short *psVar17;
|
||||
ulonglong uVar18;
|
||||
double dVar19;
|
||||
char local_res10 [8];
|
||||
longlong *local_res18;
|
||||
short *local_res20;
|
||||
undefined **local_108;
|
||||
IMAGE_DOS_HEADER *local_100;
|
||||
IMAGE_DOS_HEADER *local_f8;
|
||||
undefined8 local_f0;
|
||||
undefined8 local_e8;
|
||||
undefined **local_e0;
|
||||
longlong *local_d8;
|
||||
LPVOID local_d0;
|
||||
undefined8 local_c8;
|
||||
word local_c0 [4];
|
||||
undefined **local_b8;
|
||||
longlong *local_b0;
|
||||
LPVOID local_a8;
|
||||
byte local_a0 [16];
|
||||
IMAGE_DOS_HEADER *local_90;
|
||||
undefined8 local_88;
|
||||
uint local_80;
|
||||
byte local_78 [8];
|
||||
word local_70 [4];
|
||||
undefined **local_68;
|
||||
word local_60 [2];
|
||||
word local_5c;
|
||||
int *local_58;
|
||||
byte local_50;
|
||||
byte local_48 [16];
|
||||
ulonglong uVar14;
|
||||
|
||||
local_48[0] = 0xfe;
|
||||
local_48[1] = 0xff;
|
||||
local_48[2] = 0xff;
|
||||
local_48[3] = 0xff;
|
||||
local_48[4] = 0xff;
|
||||
local_48[5] = 0xff;
|
||||
local_48[6] = 0xff;
|
||||
local_48[7] = 0xff;
|
||||
hThread = GetCurrentThread();
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)0x0;
|
||||
SetThreadPriorityBoost(hThread,0);
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)local_res10;
|
||||
FUN_1400f8570(pIVar11);
|
||||
local_b8 = Proud::CFastArray<Proud::ISendIssueObject*___ptr64,0>::vftable;
|
||||
uVar16 = 0;
|
||||
local_b0 = (longlong *)0x0;
|
||||
local_a8 = (LPVOID)0x0;
|
||||
local_a0[0] = 0;
|
||||
local_a0[1] = 0;
|
||||
local_a0[2] = 0;
|
||||
local_a0[3] = 0;
|
||||
local_a0[4] = 0;
|
||||
local_a0[5] = 0;
|
||||
local_a0[6] = 0;
|
||||
local_a0[7] = 0;
|
||||
local_a0[8] = 0;
|
||||
local_a0[9] = 0;
|
||||
local_a0[10] = 0;
|
||||
local_a0[0xb] = 0;
|
||||
local_a0[0xc] = 0;
|
||||
local_a0[0xd] = 0;
|
||||
local_a0[0xe] = 0;
|
||||
local_a0[0xf] = 0;
|
||||
local_d8 = (longlong *)0x0;
|
||||
local_d0 = (LPVOID)0x0;
|
||||
local_c8._0_2_ = 0;
|
||||
local_c8._2_2_ = 0;
|
||||
local_c8._4_2_ = 0;
|
||||
local_c8._6_2_ = 0;
|
||||
local_e0 = Proud::CReceivedMessageList::vftable;
|
||||
local_c0[0] = 1000;
|
||||
local_c0[1] = 0;
|
||||
local_c0[2] = 1;
|
||||
local_c0[3] = 0;
|
||||
bVar5 = FUN_14006c410(pIVar11,pIVar12,param_3,param_4);
|
||||
if (bVar5) {
|
||||
local_108 = Proud::CFastArray<Proud::CompletionStatus,0>::vftable;
|
||||
local_100 = (IMAGE_DOS_HEADER *)0x0;
|
||||
local_f8 = (IMAGE_DOS_HEADER *)0x0;
|
||||
local_f0 = 0;
|
||||
local_e8 = 0;
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)0xa;
|
||||
FUN_1400c2510((longlong)&local_108,10,param_3,param_4);
|
||||
local_res18 = (longlong *)((ulonglong)local_res18 & 0xffffffff00000000);
|
||||
while (param_1[2].e_program[0] == 0) {
|
||||
param_4 = (IMAGE_DOS_HEADER *)(ulonglong)DAT_1401ac068;
|
||||
param_3 = (IMAGE_DOS_HEADER *)&local_res18;
|
||||
uVar6 = FUN_140075840(*(char **)(*(longlong *)(param_1[2].e_program + 8) + 0x788),
|
||||
(longlong *)&local_108,(uint *)param_3,param_4);
|
||||
pIVar12 = *(IMAGE_DOS_HEADER **)(*(longlong *)(param_1[2].e_program + 8) + 0x118);
|
||||
dVar19 = (double)(**(code **)&pIVar12->e_cparhdr)();
|
||||
pIVar11 = *(IMAGE_DOS_HEADER **)(param_1[2].e_program + 8);
|
||||
if (*(double *)(pIVar11[0x10].e_res_4_ + 2) <= dVar19 - *(double *)(param_1 + 2) &&
|
||||
dVar19 - *(double *)(param_1 + 2) != *(double *)(pIVar11[0x10].e_res_4_ + 2)) {
|
||||
*(double *)(param_1 + 2) = dVar19;
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)&local_b8;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c2170((longlong)param_1,(longlong)pIVar12,param_3,(longlong)param_4);
|
||||
}
|
||||
if (((char)uVar6 != '\0') && (uVar14 = uVar16, uVar18 = uVar16, (uint)local_res18 != 0)) {
|
||||
do {
|
||||
iVar13 = (int)uVar14;
|
||||
if ((iVar13 < 0) || ((int)local_f0 <= iVar13)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be30(pIVar11,pIVar12,param_3,param_4);
|
||||
}
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)(local_f8->e_magic + (longlong)iVar13 * 0x38);
|
||||
param_3 = (IMAGE_DOS_HEADER *)&local_e0;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400ca250((longlong *)param_1,(undefined8 *)pIVar12,param_3,param_4);
|
||||
if ((int)local_f0 <= iVar13) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be30(pIVar11,pIVar12,param_3,param_4);
|
||||
}
|
||||
pIVar8 = (IMAGE_DOS_HEADER *)(local_f8->e_magic + uVar18);
|
||||
pIVar11 = *(IMAGE_DOS_HEADER **)pIVar8;
|
||||
pIVar7 = (IMAGE_DOS_HEADER *)FUN_1400debf0((longlong *)pIVar11);
|
||||
if (pIVar7 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
uVar3._0_2_ = pIVar8->e_sp;
|
||||
uVar3._2_2_ = pIVar8->e_csum;
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)(ulonglong)uVar3;
|
||||
if (uVar3 == 2) {
|
||||
param_4 = (IMAGE_DOS_HEADER *)&local_e0;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c96e0((byte **)param_1,(longlong)pIVar8,pIVar7,param_4);
|
||||
pIVar12 = pIVar8;
|
||||
param_3 = pIVar7;
|
||||
}
|
||||
else if (uVar3 == 1) {
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c1b10((longlong)param_1,(longlong)pIVar8,(longlong)pIVar7,param_4);
|
||||
pIVar12 = pIVar8;
|
||||
param_3 = pIVar7;
|
||||
}
|
||||
}
|
||||
uVar14 = (ulonglong)(iVar13 + 1U);
|
||||
uVar18 = uVar18 + 0x38;
|
||||
} while (iVar13 + 1U < (uint)local_res18);
|
||||
}
|
||||
}
|
||||
local_108 = Proud::CFastArray<Proud::CompletionStatus,0>::vftable;
|
||||
pIVar11 = local_f8;
|
||||
if (local_f8 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
param_3 = local_100;
|
||||
if (local_100 == (IMAGE_DOS_HEADER *)0x0) {
|
||||
FUN_14006cc60(local_f8);
|
||||
}
|
||||
else {
|
||||
pIVar11 = local_100;
|
||||
pIVar12 = local_f8;
|
||||
(**(code **)(*(longlong *)local_100 + 0x18))();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
bVar2 = param_1[2].e_program[0];
|
||||
while (bVar2 == 0) {
|
||||
local_68 = Proud::AddrPort::vftable;
|
||||
local_90 = (IMAGE_DOS_HEADER *)0x0;
|
||||
local_78[0] = 0;
|
||||
local_78[1] = 0;
|
||||
local_78[2] = 0;
|
||||
local_78[3] = 0;
|
||||
local_78[4] = 0;
|
||||
local_78[5] = 0;
|
||||
local_78[6] = 0;
|
||||
local_78[7] = 0;
|
||||
local_88._0_2_ = 0;
|
||||
local_88._2_2_ = 0;
|
||||
local_88._4_2_ = 0;
|
||||
local_88._6_2_ = 0;
|
||||
local_80 = 5;
|
||||
local_70[0] = 0;
|
||||
local_70[1] = 0;
|
||||
param_3 = (IMAGE_DOS_HEADER *)(ulonglong)DAT_1401ac068;
|
||||
local_60 = (word [2])DAT_1401ac3d0;
|
||||
local_5c = DAT_1401ac3d4;
|
||||
uVar6 = FUN_1400753f0(*(char **)(*(longlong *)(param_1[2].e_program + 8) + 0x788),
|
||||
(longlong *)&local_90,(ulonglong)param_3,param_4);
|
||||
pIVar12 = *(IMAGE_DOS_HEADER **)(*(longlong *)(param_1[2].e_program + 8) + 0x118);
|
||||
dVar19 = (double)(**(code **)&pIVar12->e_cparhdr)();
|
||||
pIVar11 = *(IMAGE_DOS_HEADER **)(param_1[2].e_program + 8);
|
||||
if (*(double *)(pIVar11[0x10].e_res_4_ + 2) <= dVar19 - *(double *)(param_1 + 2) &&
|
||||
dVar19 - *(double *)(param_1 + 2) != *(double *)(pIVar11[0x10].e_res_4_ + 2)) {
|
||||
*(double *)(param_1 + 2) = dVar19;
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)&local_b8;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c2170((longlong)param_1,(longlong)pIVar12,param_3,(longlong)param_4);
|
||||
}
|
||||
if ((char)uVar6 != '\0') {
|
||||
param_3 = (IMAGE_DOS_HEADER *)&local_e0;
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
|
||||
FUN_1400ca250((longlong *)param_1,(undefined8 *)pIVar12,param_3,param_4);
|
||||
pIVar11 = local_90;
|
||||
pIVar8 = (IMAGE_DOS_HEADER *)FUN_1400debf0((longlong *)local_90);
|
||||
if (pIVar8 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
pIVar11 = (IMAGE_DOS_HEADER *)(ulonglong)local_80;
|
||||
if (local_80 == 2) {
|
||||
param_4 = (IMAGE_DOS_HEADER *)&local_e0;
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c96e0((byte **)param_1,(longlong)pIVar12,pIVar8,param_4);
|
||||
param_3 = pIVar8;
|
||||
}
|
||||
else if (local_80 == 1) {
|
||||
pIVar12 = (IMAGE_DOS_HEADER *)&local_90;
|
||||
pIVar11 = param_1;
|
||||
FUN_1400c1b10((longlong)param_1,(longlong)pIVar12,(longlong)pIVar8,param_4);
|
||||
param_3 = pIVar8;
|
||||
}
|
||||
}
|
||||
}
|
||||
bVar2 = param_1[2].e_program[0];
|
||||
}
|
||||
}
|
||||
if (*(longlong *)(*(longlong *)(param_1[2].e_program + 8) + 0x17f0) != 0) {
|
||||
FUN_14006cb70(pIVar11,pIVar12,param_3,param_4);
|
||||
local_res20 = (short *)PTR_DAT_1401ac010;
|
||||
FUN_140053d20((longlong *)&local_res20,L"%s thread 종료.",
|
||||
L"Proud::CNetThreads_S::NetWorkerThread_Main",param_4);
|
||||
psVar4 = local_res20;
|
||||
psVar17 = local_res20;
|
||||
if (local_res20 == (short *)0x0) {
|
||||
psVar17 = (short *)PTR_DAT_1401ac010;
|
||||
}
|
||||
uVar6 = 0;
|
||||
lVar10 = *(longlong *)(*(longlong *)(param_1[2].e_program + 8) + 0x17f0);
|
||||
FUN_1400cb700(lVar10,0,psVar17,param_4);
|
||||
if (((psVar4 != (short *)0x0) && (psVar4 != (short *)PTR_DAT_1401ac010)) &&
|
||||
(psVar4 + -4 != (short *)0x0)) {
|
||||
piVar9 = (int *)FUN_14006cb70(lVar10,uVar6,psVar17,param_4);
|
||||
local_58 = piVar9;
|
||||
FUN_14006b350(piVar9);
|
||||
local_50 = 1;
|
||||
piVar1 = (int *)(psVar4 + -2);
|
||||
*piVar1 = *piVar1 + -1;
|
||||
if (*piVar1 == 0) {
|
||||
FUN_14006cc60(psVar4 + -4);
|
||||
}
|
||||
FUN_14006b3e0((longlong)piVar9);
|
||||
}
|
||||
}
|
||||
local_e0 = Proud::CFastArray<Proud::CReceivedMessage,0>::vftable;
|
||||
lVar10 = (longlong)(int)local_c8;
|
||||
if (0 < (int)local_c8) {
|
||||
puVar15 = (undefined4 *)((longlong)local_d0 + 0x18);
|
||||
do {
|
||||
local_res18 = (longlong *)(puVar15 + -4);
|
||||
FUN_1400d1800(local_res18);
|
||||
if (*(longlong *)(puVar15 + -2) != 0) {
|
||||
if ((int)puVar15[1] < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be00();
|
||||
}
|
||||
*puVar15 = 0;
|
||||
}
|
||||
uVar16 = uVar16 + 1;
|
||||
puVar15 = puVar15 + 0x12;
|
||||
} while ((longlong)uVar16 < lVar10);
|
||||
}
|
||||
if (local_d0 != (LPVOID)0x0) {
|
||||
if (local_d8 == (longlong *)0x0) {
|
||||
FUN_14006cc60(local_d0);
|
||||
}
|
||||
else {
|
||||
(**(code **)(*local_d8 + 0x18))(local_d8,local_d0);
|
||||
}
|
||||
}
|
||||
if (local_a8 != (LPVOID)0x0) {
|
||||
if (local_b0 == (longlong *)0x0) {
|
||||
FUN_14006cc60(local_a8);
|
||||
}
|
||||
else {
|
||||
(**(code **)(*local_b0 + 0x18))(local_b0,local_a8);
|
||||
}
|
||||
}
|
||||
FUN_1400f85a0(local_res10);
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue