173 lines
5.7 KiB
C
173 lines
5.7 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401d15c0 FUN_1401d15c0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Removing unreachable block (ram,0x0001401d1941) */
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
void FUN_1401d15c0(longlong param_1)
|
|
|
|
{
|
|
double dVar1;
|
|
undefined4 uVar2;
|
|
longlong lVar3;
|
|
undefined8 uVar4;
|
|
longlong lVar5;
|
|
longlong lVar6;
|
|
longlong lVar7;
|
|
double dVar8;
|
|
undefined1 auStack_d98 [32];
|
|
undefined1 local_d78 [8];
|
|
longlong local_d70;
|
|
longlong local_d68;
|
|
undefined4 local_d60;
|
|
int local_d5c;
|
|
undefined4 local_d50 [2];
|
|
undefined8 local_d48;
|
|
undefined1 local_d40;
|
|
undefined4 local_d3c;
|
|
undefined1 local_d38;
|
|
undefined1 local_d37;
|
|
undefined8 local_d30;
|
|
undefined4 uStack_d28;
|
|
undefined4 uStack_d24;
|
|
longlong *local_d20;
|
|
undefined8 local_d18;
|
|
undefined1 local_d10 [72];
|
|
undefined4 local_cc8;
|
|
undefined4 uStack_cc4;
|
|
undefined4 uStack_cc0;
|
|
undefined4 uStack_cbc;
|
|
undefined4 *local_48;
|
|
undefined4 local_40;
|
|
int local_3c;
|
|
ulonglong local_38;
|
|
|
|
local_d18 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_d98;
|
|
(**(code **)(*(longlong *)(param_1 + 0x78) + 0x10))();
|
|
lVar7 = 0;
|
|
lVar3 = lVar7;
|
|
if (*(longlong *)(param_1 + 0x1670) != 0) {
|
|
lVar3 = *(longlong *)(param_1 + 0x1660);
|
|
}
|
|
do {
|
|
lVar6 = lVar3;
|
|
if (lVar6 == 0) {
|
|
return;
|
|
}
|
|
if ((((*(longlong **)(lVar6 + 8) != (longlong *)0x0) &&
|
|
(lVar3 = **(longlong **)(lVar6 + 8), lVar3 != 0)) && (*(char *)(lVar3 + 0x684) == '\0')) &&
|
|
(*(int *)(lVar3 + 0x56c) != 1)) {
|
|
lVar5 = lVar7;
|
|
if (*(longlong *)(param_1 + 0x5d8) != 0) {
|
|
lVar5 = *(longlong *)(*(longlong *)(param_1 + 0x5d8) + 0x38);
|
|
}
|
|
dVar8 = *(double *)(lVar3 + 0x148) - *(double *)(lVar5 + 0x100);
|
|
*(double *)(lVar3 + 0x148) = dVar8;
|
|
if (dVar8 <= 0.0) {
|
|
*(undefined8 *)(lVar3 + 0x148) = DAT_140344d20;
|
|
uVar4 = (**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
*(undefined8 *)(lVar3 + 0x80) = uVar4;
|
|
if (*(char *)(lVar3 + 0x608) == '\0') {
|
|
FUN_14016b440(local_d78);
|
|
FUN_14016abe0(local_d78);
|
|
FUN_14016b5a0(local_d78,0x800);
|
|
FUN_14016b5a0(local_d78,0);
|
|
FUN_14004eef0(local_d78,0x20);
|
|
uVar4 = FUN_1401a1eb0(param_1 + 0x1620);
|
|
FUN_14004ee00(local_d78,uVar4);
|
|
local_3c = 200;
|
|
local_40 = 0;
|
|
local_48 = &local_cc8;
|
|
if (local_d70 == 0) {
|
|
uVar2 = local_d60;
|
|
if (local_d68 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
uVar2 = *(undefined4 *)(local_d70 + 0x18);
|
|
}
|
|
lVar5 = local_d68;
|
|
if (local_d68 == 0) {
|
|
if (local_d70 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
lVar5 = lVar7;
|
|
if (*(int *)(local_d70 + 0x18) != 0) {
|
|
lVar5 = *(longlong *)(local_d70 + 0x10);
|
|
}
|
|
}
|
|
local_40 = 1;
|
|
local_d30._0_4_ = (undefined4)lVar5;
|
|
local_d30._4_4_ = (undefined4)((ulonglong)lVar5 >> 0x20);
|
|
local_cc8 = (undefined4)local_d30;
|
|
uStack_cc4 = local_d30._4_4_;
|
|
uStack_cbc = uStack_d24;
|
|
local_d50[0] = 0;
|
|
local_d48 = 0;
|
|
local_d40 = 1;
|
|
local_d3c = 0xffffffff;
|
|
local_d38 = 1;
|
|
local_d37 = DAT_140344dfc;
|
|
local_d30 = lVar5;
|
|
uStack_d28 = uVar2;
|
|
uStack_cc0 = uVar2;
|
|
FUN_1401fa510(lVar3 + 0x668,&local_cc8,local_d50);
|
|
if (local_48 == (undefined4 *)0x0) {
|
|
FUN_14016d300(local_d10,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_d10,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_3c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_40 = 0;
|
|
local_d20 = &local_d70;
|
|
FUN_14016d0e0(&local_d70);
|
|
if (local_d68 != 0) {
|
|
if (local_d5c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_d60 = 0;
|
|
}
|
|
}
|
|
else {
|
|
dVar8 = (double)(**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
dVar8 = dVar8 - *(double *)(lVar3 + 0xc0);
|
|
if (0.0 < dVar8) {
|
|
*(double *)(lVar3 + 0x140) = dVar8;
|
|
}
|
|
uVar4 = (**(code **)(*(longlong *)(param_1 + 0x70) + 0x1c0))(param_1 + 0x70);
|
|
*(undefined8 *)(lVar3 + 0xc0) = uVar4;
|
|
*(int *)(lVar3 + 0x100) = *(int *)(lVar3 + 0x100) + 1;
|
|
*(undefined8 *)(lVar3 + 0x150) = 0;
|
|
dVar8 = *(double *)(param_1 + 0x4f8) + *(double *)(lVar3 + 0x60);
|
|
*(double *)(lVar3 + 0x158) = dVar8;
|
|
if (*(char *)(lVar3 + 0x618) != '\0') {
|
|
*(undefined8 *)(lVar3 + 0x50) = 0;
|
|
*(undefined1 *)(lVar3 + 0x618) = 0;
|
|
}
|
|
dVar1 = *(double *)(lVar3 + 0x50);
|
|
if (dVar1 <= 0.0) {
|
|
*(undefined8 *)(lVar3 + 0x50) = *(undefined8 *)(lVar3 + 0x158);
|
|
}
|
|
else {
|
|
*(double *)(lVar3 + 0x50) = (dVar8 - dVar1) * _DAT_140344d38 + dVar1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lVar3 = lVar7;
|
|
if (lVar6 != 0) {
|
|
lVar3 = *(longlong *)(lVar6 + 0x10);
|
|
}
|
|
} while( true );
|
|
}
|
|
|