server-re/decomp/DBCServer_Release_x64/full/functions/0x1401b2d00.c

342 lines
12 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401b2d00 FUN_1401b2d00
* Pseudocode, not original source. */
undefined8 FUN_1401b2d00(longlong *param_1,int *param_2,undefined8 param_3)
{
int *piVar1;
int iVar2;
char cVar3;
undefined4 uVar4;
DWORD DVar5;
DWORD DVar6;
undefined8 uVar7;
longlong *plVar8;
undefined **ppuVar9;
undefined *puVar10;
int iVar11;
undefined *puVar12;
undefined *local_res10;
undefined8 local_res18;
int local_res20 [2];
undefined *local_118;
undefined8 local_110;
undefined *local_108;
int local_100;
undefined8 local_f8;
int local_f0;
undefined *local_e8;
undefined *local_e0;
undefined *local_d8;
undefined *local_d0;
undefined *local_c8;
undefined **local_c0;
undefined1 local_b8;
undefined *local_b0;
undefined8 local_a8;
undefined1 local_98 [4];
int local_94;
undefined8 local_60;
local_a8 = 0xfffffffffffffffe;
iVar2 = param_2[10];
local_res18 = param_3;
if (iVar2 == 0) {
FUN_1401b1b20(param_1,0);
}
iVar11 = *param_2;
cVar3 = FUN_14016bd20(param_2,local_res20);
if (cVar3 == '\0') {
LAB_1401b3502:
FUN_14016b040(param_2,(int)((iVar11 >> 0x1f & 7U) + iVar11) >> 3);
uVar7 = 0;
}
else {
local_60 = param_3;
if (local_res20[0] == 0x7d1) {
FUN_14016ec40(local_98);
local_94 = param_2[10];
local_98[0] = (undefined1)param_2[0x10];
(**(code **)(*(longlong *)param_1[2] + 0x48))
((longlong *)param_1[2],param_2,PTR_u_NotifyLoginOk_140345398);
DVar5 = 0;
if (*(char *)((longlong)param_1 + 0x19) == '\0') {
if ((char)param_1[3] == '\0') {
(**(code **)(*(longlong *)param_1[2] + 0x70))
((longlong *)param_1[2],iVar2,0x7d1,PTR_u_NotifyLoginOk_140345398,&DAT_1402a4aa0
);
}
}
else if ((char)param_1[3] == '\0') {
FUN_14016d8c0();
puVar10 = PTR_DAT_1403440a0;
local_res10 = PTR_DAT_1403440a0;
plVar8 = (longlong *)FUN_1400449b0(&local_res10,&local_b0,0xfffffffe);
if (puVar10 == (undefined *)0x0) {
puVar10 = PTR_DAT_1403440a0;
}
local_res10 = puVar10;
if ((undefined *)*plVar8 != puVar10) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
if (((puVar10 != (undefined *)0x0) && (puVar10 != PTR_DAT_1403440a0)) &&
(puVar10 + -8 != (undefined *)0x0)) {
ppuVar9 = (undefined **)FUN_14016d8c0();
local_c0 = ppuVar9;
FUN_14016db50(ppuVar9);
local_b8 = 1;
piVar1 = (int *)(puVar10 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar10 + -8);
}
FUN_14016dbe0(ppuVar9);
}
puVar10 = (undefined *)*plVar8;
if (((puVar10 != PTR_DAT_1403440a0) && (puVar10 != (undefined *)0x0)) &&
(puVar10 != (undefined *)0x8)) {
*(int *)(puVar10 + -4) = *(int *)(puVar10 + -4) + 1;
}
local_res10 = puVar10;
FUN_14016dbe0(uVar7);
}
if (((local_b0 != (undefined *)0x0) && (local_b0 != PTR_DAT_1403440a0)) &&
(local_b0 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
piVar1 = (int *)(local_b0 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_b0 + -8);
}
FUN_14016dbe0(uVar7);
}
local_c0 = &local_e8;
local_b0 = PTR_DAT_1403440a0;
FUN_14016d8c0();
local_e8 = PTR_DAT_1403440a0;
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
local_e8 = (undefined *)0x0;
}
if (puVar10 != PTR_DAT_1403440a0) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
FUN_14004eb70(&local_e8);
if (((puVar10 != PTR_DAT_1403440a0) && (puVar10 != (undefined *)0x0)) &&
(puVar10 != (undefined *)0x8)) {
*(int *)(puVar10 + -4) = *(int *)(puVar10 + -4) + 1;
}
local_e8 = puVar10;
FUN_14016dbe0(uVar7);
}
puVar12 = PTR_u_NotifyLoginOk_140345398;
FUN_14016d8c0();
local_d8 = PTR_DAT_1403440a0;
uVar4 = FUN_14016d740(puVar12);
uVar7 = FUN_14004e940(&local_d8,uVar4);
FUN_14016d770(uVar7,puVar12,uVar4);
FUN_14004e560(&local_d8);
(**(code **)(*param_1 + 0x28))(param_1,0x7d1,&local_d8,&local_e8);
puVar12 = puVar10;
if (puVar10 == (undefined *)0x0) {
puVar12 = PTR_DAT_1403440a0;
}
(**(code **)(*(longlong *)param_1[2] + 0x70))
((longlong *)param_1[2],iVar2,0x7d1,PTR_u_NotifyLoginOk_140345398,puVar12);
param_3 = local_res18;
if (((puVar10 != (undefined *)0x0) && (puVar10 != PTR_DAT_1403440a0)) &&
(puVar10 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
piVar1 = (int *)(puVar10 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar10 + -8);
}
FUN_14016dbe0(uVar7);
param_3 = local_res18;
}
}
if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) {
local_110 = CONCAT44(local_110._4_4_,0x7d1);
local_108 = PTR_u_NotifyLoginOk_140345398;
local_100 = iVar2;
local_f8 = param_3;
(**(code **)(*param_1 + 0x20))(param_1,&local_110);
DVar5 = GetTickCount();
}
cVar3 = (**(code **)(*param_1 + 0x38))(param_1,iVar2,local_98);
if (cVar3 == '\0') {
(**(code **)(*(longlong *)param_1[2] + 0x40))
((longlong *)param_1[2],PTR_u_NotifyLoginOk_140345398);
}
if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) {
local_110 = CONCAT44(local_110._4_4_,0x7d1);
local_108 = PTR_u_NotifyLoginOk_140345398;
LAB_1401b34d3:
local_100 = iVar2;
local_f8 = param_3;
DVar6 = GetTickCount();
local_f0 = DVar6 - DVar5;
(**(code **)(*param_1 + 0x18))(param_1,&local_110);
}
}
else {
if (local_res20[0] != 0x7d2) goto LAB_1401b3502;
FUN_14016ec40(local_98);
local_94 = param_2[10];
local_98[0] = (undefined1)param_2[0x10];
cVar3 = FUN_14016b370(param_2,&local_118,4);
uVar4 = local_res10._0_4_;
if (cVar3 != '\0') {
uVar4 = local_118._0_4_;
}
local_res10 = (undefined *)CONCAT44(local_res10._4_4_,uVar4);
(**(code **)(*(longlong *)param_1[2] + 0x48))
((longlong *)param_1[2],param_2,PTR_u_NotifyLoginFailed_1403453a0);
DVar5 = 0;
if (*(char *)((longlong)param_1 + 0x19) == '\0') {
if ((char)param_1[3] == '\0') {
(**(code **)(*(longlong *)param_1[2] + 0x70))
((longlong *)param_1[2],iVar2,0x7d2,PTR_u_NotifyLoginFailed_1403453a0,
&DAT_1402a4aa0);
}
}
else if ((char)param_1[3] == '\0') {
FUN_14016d8c0();
local_118 = PTR_DAT_1403440a0;
uVar7 = FUN_140198ea0((ulonglong)local_res10 & 0xffffffff);
FUN_14004ea20(&local_118,uVar7);
FUN_14004ea20(&local_118,&DAT_1402a2ee8);
puVar10 = local_118;
iVar11 = 0;
if ((local_118 != (undefined *)0x0) && (local_118 != PTR_DAT_1403440a0)) {
iVar11 = *(int *)(local_118 + -8);
}
plVar8 = (longlong *)FUN_1400449b0(&local_118,&local_c8,iVar11 + -2);
if (puVar10 == (undefined *)0x0) {
puVar10 = PTR_DAT_1403440a0;
}
local_118 = puVar10;
if ((undefined *)*plVar8 != puVar10) {
ppuVar9 = (undefined **)FUN_14016d8c0();
local_c0 = ppuVar9;
FUN_14016db50(ppuVar9);
local_b8 = 1;
if (((puVar10 != (undefined *)0x0) && (puVar10 != PTR_DAT_1403440a0)) &&
(puVar10 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
piVar1 = (int *)(puVar10 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar10 + -8);
}
FUN_14016dbe0(uVar7);
}
puVar10 = (undefined *)*plVar8;
if (((puVar10 != PTR_DAT_1403440a0) && (puVar10 != (undefined *)0x0)) &&
(puVar10 != (undefined *)0x8)) {
*(int *)(puVar10 + -4) = *(int *)(puVar10 + -4) + 1;
}
local_118 = puVar10;
FUN_14016dbe0(ppuVar9);
}
if (((local_c8 != (undefined *)0x0) && (local_c8 != PTR_DAT_1403440a0)) &&
(local_c8 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
piVar1 = (int *)(local_c8 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(local_c8 + -8);
}
FUN_14016dbe0(uVar7);
}
local_c0 = &local_e0;
local_c8 = PTR_DAT_1403440a0;
FUN_14016d8c0();
local_e0 = PTR_DAT_1403440a0;
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
local_e0 = (undefined *)0x0;
}
if (puVar10 != PTR_DAT_1403440a0) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
FUN_14004eb70(&local_e0);
if (((puVar10 != PTR_DAT_1403440a0) && (puVar10 != (undefined *)0x0)) &&
(puVar10 != (undefined *)0x8)) {
*(int *)(puVar10 + -4) = *(int *)(puVar10 + -4) + 1;
}
local_e0 = puVar10;
FUN_14016dbe0(uVar7);
}
puVar12 = PTR_u_NotifyLoginFailed_1403453a0;
FUN_14016d8c0();
local_d0 = PTR_DAT_1403440a0;
uVar4 = FUN_14016d740(puVar12);
uVar7 = FUN_14004e940(&local_d0,uVar4);
FUN_14016d770(uVar7,puVar12,uVar4);
FUN_14004e560(&local_d0);
(**(code **)(*param_1 + 0x28))(param_1,0x7d2,&local_d0,&local_e0);
puVar12 = puVar10;
if (puVar10 == (undefined *)0x0) {
puVar12 = PTR_DAT_1403440a0;
}
(**(code **)(*(longlong *)param_1[2] + 0x70))
((longlong *)param_1[2],iVar2,0x7d2,PTR_u_NotifyLoginFailed_1403453a0,puVar12);
param_3 = local_res18;
if (((puVar10 != (undefined *)0x0) && (puVar10 != PTR_DAT_1403440a0)) &&
(puVar10 + -8 != (undefined *)0x0)) {
uVar7 = FUN_14016d8c0();
local_110 = uVar7;
FUN_14016db50(uVar7);
local_108 = (undefined *)CONCAT71(local_108._1_7_,1);
piVar1 = (int *)(puVar10 + -4);
*piVar1 = *piVar1 + -1;
if (*piVar1 == 0) {
FUN_14016d970(puVar10 + -8);
}
FUN_14016dbe0(uVar7);
param_3 = local_res18;
}
}
if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) {
local_110 = CONCAT44(local_110._4_4_,0x7d2);
local_108 = PTR_u_NotifyLoginFailed_1403453a0;
local_100 = iVar2;
local_f8 = param_3;
(**(code **)(*param_1 + 0x20))(param_1,&local_110);
DVar5 = GetTickCount();
}
cVar3 = (**(code **)(*param_1 + 0x40))(param_1,iVar2,local_98,&local_res10);
if (cVar3 == '\0') {
(**(code **)(*(longlong *)param_1[2] + 0x40))
((longlong *)param_1[2],PTR_u_NotifyLoginFailed_1403453a0);
}
if (((char)param_1[3] == '\0') && (*(char *)((longlong)param_1 + 0x1a) != '\0')) {
local_110 = CONCAT44(local_110._4_4_,0x7d2);
local_108 = PTR_u_NotifyLoginFailed_1403453a0;
goto LAB_1401b34d3;
}
}
uVar7 = 1;
}
return uVar7;
}