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
273
decomp/MessageServer_Release_x64/full/functions/0x1400c96e0.c
Normal file
273
decomp/MessageServer_Release_x64/full/functions/0x1400c96e0.c
Normal file
|
|
@ -0,0 +1,273 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400c96e0 FUN_1400c96e0
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
void FUN_1400c96e0(byte **param_1,longlong param_2,IMAGE_DOS_HEADER *param_3,
|
||||
IMAGE_DOS_HEADER *param_4)
|
||||
|
||||
{
|
||||
undefined4 uVar1;
|
||||
IMAGE_DOS_HEADER *pIVar2;
|
||||
int iVar3;
|
||||
int *piVar4;
|
||||
IMAGE_DOS_HEADER *pIVar5;
|
||||
IMAGE_DOS_HEADER *pIVar6;
|
||||
undefined8 uVar7;
|
||||
undefined8 *puVar8;
|
||||
longlong *plVar9;
|
||||
byte *pbVar10;
|
||||
byte **ppbVar11;
|
||||
word *pwVar12;
|
||||
int iVar13;
|
||||
byte *pbVar14;
|
||||
IMAGE_DOS_HEADER *pIVar15;
|
||||
IMAGE_DOS_HEADER *pIVar16;
|
||||
longlong lVar17;
|
||||
undefined1 local_170 [8];
|
||||
IMAGE_DOS_HEADER *local_168;
|
||||
longlong local_160;
|
||||
undefined **local_158;
|
||||
byte local_150 [4];
|
||||
word local_14c;
|
||||
undefined **local_148;
|
||||
word local_140 [4];
|
||||
undefined **local_138;
|
||||
byte local_130 [4];
|
||||
word local_12c;
|
||||
undefined **local_128;
|
||||
undefined4 local_120;
|
||||
word local_11c;
|
||||
longlong local_118;
|
||||
undefined **local_110;
|
||||
word local_108 [2];
|
||||
word local_104;
|
||||
undefined **local_100;
|
||||
byte local_f8 [4];
|
||||
word local_f4;
|
||||
undefined **local_f0;
|
||||
byte local_e8 [4];
|
||||
word local_e4;
|
||||
word *local_e0;
|
||||
byte local_d8;
|
||||
int *local_d0;
|
||||
byte local_c8;
|
||||
int *local_c0;
|
||||
byte local_b8;
|
||||
byte *local_b0;
|
||||
byte local_a8 [8];
|
||||
IMAGE_DOS_HEADER *local_a0;
|
||||
byte local_98 [16];
|
||||
int *local_88;
|
||||
undefined1 local_80;
|
||||
word *local_78;
|
||||
undefined1 local_70;
|
||||
word *local_68;
|
||||
undefined1 local_60;
|
||||
undefined8 local_58;
|
||||
|
||||
local_58 = 0xfffffffffffffffe;
|
||||
pbVar14 = (byte *)0x0;
|
||||
pbVar10 = param_3->e_program;
|
||||
if (param_3 == (IMAGE_DOS_HEADER *)0x0) {
|
||||
pbVar10 = pbVar14;
|
||||
}
|
||||
plVar9 = &local_118;
|
||||
pIVar5 = param_3;
|
||||
pIVar6 = param_4;
|
||||
FUN_1400d8980(plVar9,(longlong)pbVar10);
|
||||
if (*(int *)(param_2 + 8) < 1) {
|
||||
pwVar12 = param_3[1].e_res2_10_;
|
||||
local_68 = pwVar12;
|
||||
FUN_14006b350((int *)pwVar12);
|
||||
local_60 = 1;
|
||||
param_3[2].e_program[0] = 0;
|
||||
FUN_1400d8bf0((longlong)param_3,pbVar10,(undefined **)pIVar5,pIVar6);
|
||||
FUN_14006b3e0((longlong)pwVar12);
|
||||
goto LAB_1400c9ced;
|
||||
}
|
||||
local_158 = Proud::AddrPort::vftable;
|
||||
local_150[0] = 0;
|
||||
local_150[1] = 0;
|
||||
local_150[2] = 0;
|
||||
local_150[3] = 0;
|
||||
local_14c = 0;
|
||||
local_160 = 0;
|
||||
local_148 = Proud::AddrPort::vftable;
|
||||
local_140[0] = 0;
|
||||
local_140[1] = 0;
|
||||
local_140[2] = 0;
|
||||
FUN_14006cb70(plVar9,pbVar10,pIVar5,pIVar6);
|
||||
local_168 = (IMAGE_DOS_HEADER *)PTR_DAT_1401ac010;
|
||||
piVar4 = (int *)(**(code **)(*(longlong *)param_1[0x29] + 0x58))();
|
||||
local_c0 = piVar4;
|
||||
FUN_14006b350(piVar4);
|
||||
local_b8 = 1;
|
||||
if (DAT_1401b42cf != '\0') {
|
||||
(**(code **)(*(longlong *)param_1[0x29] + 200))
|
||||
(param_1[0x29],L"Proud::CNetThreads_S::NetWorkerThread_UdpRecvCompletionCase");
|
||||
}
|
||||
lVar17 = (**(code **)(*(longlong *)(param_1[0x29] + 0x118) + 8))();
|
||||
local_f0 = Proud::AddrPort::vftable;
|
||||
local_e8 = *(byte (*) [4])(param_2 + 0x30);
|
||||
local_e4 = *(word *)(param_2 + 0x34);
|
||||
pIVar5 = (IMAGE_DOS_HEADER *)FUN_14007c190((longlong)param_1[0x29],(longlong)&local_f0);
|
||||
local_100 = Proud::AddrPort::vftable;
|
||||
local_f8 = *(byte (*) [4])(param_2 + 0x30);
|
||||
local_f4 = *(word *)(param_2 + 0x34);
|
||||
local_170._0_4_ = FUN_14007cde0((longlong)param_1[0x29],(longlong)&local_100);
|
||||
uVar1 = *(undefined4 *)(param_1[0x29] + 0x22c);
|
||||
if (pIVar5 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
FUN_1400d8960((longlong)pIVar5[1].e_program);
|
||||
local_140[0] = pIVar5[0xe].e_sp;
|
||||
local_140[1] = pIVar5[0xe].e_csum;
|
||||
local_140[2] = pIVar5[0xe].e_ip;
|
||||
}
|
||||
FUN_14006b3e0((longlong)piVar4);
|
||||
local_b8 = 0;
|
||||
local_e0 = param_3[1].e_res2_10_;
|
||||
FUN_14006b350((int *)local_e0);
|
||||
local_d8 = 1;
|
||||
local_128 = Proud::AddrPort::vftable;
|
||||
local_120 = *(undefined4 *)(param_2 + 0x30);
|
||||
local_11c = *(word *)(param_2 + 0x34);
|
||||
pbVar10 = pbVar14;
|
||||
if (*(ulonglong **)(param_3[2].e_program + 0x10) != (ulonglong *)0x0) {
|
||||
pbVar10 = (byte *)**(ulonglong **)(param_3[2].e_program + 0x10);
|
||||
}
|
||||
puVar8 = *(undefined8 **)(param_3[2].e_program + 0x38);
|
||||
pIVar6 = (IMAGE_DOS_HEADER *)FUN_140072240((longlong)pbVar10);
|
||||
pIVar16 = (IMAGE_DOS_HEADER *)&local_128;
|
||||
pIVar15 = (IMAGE_DOS_HEADER *)(ulonglong)*(uint *)(param_2 + 8);
|
||||
uVar7 = FUN_1400d6a50(puVar8,(longlong)pIVar6,*(uint *)(param_2 + 8),(longlong)pIVar16,
|
||||
(char)local_170._0_4_,lVar17,&local_160,(longlong *)&local_168);
|
||||
FUN_14006b3e0((longlong)param_3[1].e_res2_10_);
|
||||
local_d8 = 0;
|
||||
if ((int)uVar7 == 0) {
|
||||
if (pIVar5 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
*(longlong *)(param_1[0x29] + 0x600) = *(longlong *)(param_1[0x29] + 0x600) + 1;
|
||||
*(longlong *)(param_1[0x29] + 0x640) =
|
||||
*(longlong *)(param_1[0x29] + 0x640) + (longlong)*(int *)(local_160 + 0x40);
|
||||
uVar7 = (**(code **)(*(longlong *)(param_1[0x29] + 0x118) + 8))();
|
||||
pIVar5[3].e_lfarlc = (short)uVar7;
|
||||
pIVar5[3].e_ovno = (short)((ulonglong)uVar7 >> 0x10);
|
||||
pIVar5[3].e_res_4_[0] = (short)((ulonglong)uVar7 >> 0x20);
|
||||
pIVar5[3].e_res_4_[1] = (short)((ulonglong)uVar7 >> 0x30);
|
||||
uVar7 = (**(code **)(*(longlong *)(param_1[0x29] + 0x118) + 8))();
|
||||
*(undefined8 *)(pIVar5[3].e_res2_10_ + 8) = uVar7;
|
||||
FUN_1400ac2e0((longlong)param_4,0,pIVar15,pIVar16);
|
||||
if (*(uint *)(local_160 + 0x40) != 0) {
|
||||
pbVar14 = *(byte **)(local_160 + 0x38);
|
||||
}
|
||||
FUN_1400d1f50((longlong)pIVar5,(longlong)pbVar14,(ulonglong)*(uint *)(local_160 + 0x40),
|
||||
(longlong)&local_148,uVar1,(longlong)param_4);
|
||||
pIVar6 = pIVar5;
|
||||
pIVar16 = param_3;
|
||||
FUN_1400c9630((longlong *)param_1,pIVar5,param_4,param_3);
|
||||
pIVar15 = param_4;
|
||||
goto LAB_1400c9bfc;
|
||||
}
|
||||
FUN_1400ac2e0((longlong)param_4,0,pIVar15,pIVar16);
|
||||
FUN_1400daf20(&local_b0);
|
||||
local_b0 = pbVar14;
|
||||
if (*(int *)(local_160 + 0x40) != 0) {
|
||||
local_b0 = *(byte **)(local_160 + 0x38);
|
||||
}
|
||||
local_a8._0_4_ = *(undefined4 *)(local_160 + 0x40);
|
||||
local_98[0] = 0;
|
||||
local_98[1] = 0;
|
||||
local_98[2] = 0;
|
||||
local_98[3] = 0;
|
||||
pIVar6 = (IMAGE_DOS_HEADER *)local_170;
|
||||
ppbVar11 = &local_b0;
|
||||
local_a0 = param_4;
|
||||
local_98._4_4_ = uVar1;
|
||||
puVar8 = FUN_1400db8b0((longlong *)ppbVar11,(undefined4 *)pIVar6,pIVar15,pIVar16);
|
||||
if (-1 < (int)puVar8) {
|
||||
iVar3._0_2_ = param_4->e_lfarlc;
|
||||
iVar3._2_2_ = param_4->e_ovno;
|
||||
while (iVar13 = (int)pbVar14, iVar13 != iVar3) {
|
||||
if ((iVar13 < 0) || (iVar3 <= iVar13)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be30(ppbVar11,pIVar6,pIVar15,pIVar16);
|
||||
}
|
||||
pIVar5 = (IMAGE_DOS_HEADER *)(*(longlong *)¶m_4->e_sp + (longlong)iVar13 * 0x48);
|
||||
FUN_1400bc600((int *)pIVar5,0,pIVar15,pIVar16);
|
||||
local_138 = Proud::AddrPort::vftable;
|
||||
local_130[0] = local_150[0];
|
||||
local_130[1] = local_150[1];
|
||||
local_130[2] = local_150[2];
|
||||
local_130[3] = local_150[3];
|
||||
local_12c = local_14c;
|
||||
pIVar6 = (IMAGE_DOS_HEADER *)&local_138;
|
||||
ppbVar11 = param_1;
|
||||
pIVar16 = param_3;
|
||||
FUN_1400c5bc0((longlong)param_1,(longlong)pIVar6,(uint *)pIVar5,(longlong)param_3);
|
||||
iVar3._0_2_ = param_4->e_lfarlc;
|
||||
iVar3._2_2_ = param_4->e_ovno;
|
||||
if (iVar3 <= iVar13) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14006be30(ppbVar11,pIVar6,pIVar5,pIVar16);
|
||||
}
|
||||
pIVar15 = pIVar5;
|
||||
pbVar14 = (byte *)(ulonglong)(iVar13 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ((int)uVar7 == 2) {
|
||||
piVar4 = (int *)(**(code **)(*(longlong *)param_1[0x29] + 0x58))();
|
||||
local_d0 = piVar4;
|
||||
FUN_14006b350(piVar4);
|
||||
local_c8 = 1;
|
||||
if (DAT_1401b42cf != '\0') {
|
||||
(**(code **)(*(longlong *)param_1[0x29] + 200))
|
||||
(param_1[0x29],L"Proud::CNetThreads_S::NetWorkerThread_UdpRecvCompletionCase");
|
||||
}
|
||||
pIVar15 = local_168;
|
||||
if (local_168 == (IMAGE_DOS_HEADER *)0x0) {
|
||||
pIVar15 = (IMAGE_DOS_HEADER *)PTR_DAT_1401ac010;
|
||||
}
|
||||
local_110 = Proud::AddrPort::vftable;
|
||||
local_108 = *(word (*) [2])(param_2 + 0x30);
|
||||
local_104 = *(word *)(param_2 + 0x34);
|
||||
pIVar6 = (IMAGE_DOS_HEADER *)&local_110;
|
||||
FUN_14008e710((longlong *)param_1[0x29],(longlong)pIVar6,(short *)pIVar15);
|
||||
FUN_14006b3e0((longlong)piVar4);
|
||||
local_c8 = 0;
|
||||
}
|
||||
LAB_1400c9bfc:
|
||||
if (pIVar5 != (IMAGE_DOS_HEADER *)0x0) {
|
||||
FUN_1400d8970((longlong)pIVar5[1].e_program);
|
||||
}
|
||||
}
|
||||
pwVar12 = param_3[1].e_res2_10_;
|
||||
local_78 = pwVar12;
|
||||
FUN_14006b350((int *)pwVar12);
|
||||
local_70 = 1;
|
||||
param_3[2].e_program[0] = 0;
|
||||
FUN_1400d8bf0((longlong)param_3,pIVar6,(undefined **)pIVar15,pIVar16);
|
||||
FUN_14006b3e0((longlong)pwVar12);
|
||||
pIVar5 = local_168;
|
||||
if (((local_168 != (IMAGE_DOS_HEADER *)0x0) &&
|
||||
(local_168 != (IMAGE_DOS_HEADER *)PTR_DAT_1401ac010)) &&
|
||||
(pIVar2 = local_168 + -1, pIVar2->e_program + 0x38 != (byte *)0x0)) {
|
||||
piVar4 = (int *)FUN_14006cb70(pwVar12,pIVar6,pIVar15,pIVar16);
|
||||
local_88 = piVar4;
|
||||
FUN_14006b350(piVar4);
|
||||
local_80 = 1;
|
||||
pbVar14 = pIVar5[-1].e_program + 0x3c;
|
||||
*(int *)pbVar14 = *(int *)pbVar14 + -1;
|
||||
if (*(int *)pbVar14 == 0) {
|
||||
FUN_14006cc60(pIVar2->e_program + 0x38);
|
||||
}
|
||||
FUN_14006b3e0((longlong)piVar4);
|
||||
}
|
||||
local_168 = (IMAGE_DOS_HEADER *)PTR_DAT_1401ac010;
|
||||
if (local_160 != 0) {
|
||||
FUN_1400c28d0(local_160,pIVar6,(SIZE_T)pIVar15);
|
||||
}
|
||||
LAB_1400c9ced:
|
||||
FUN_1400d8990(&local_118);
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue