116 lines
3.8 KiB
C
116 lines
3.8 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401c2b40 FUN_1401c2b40
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1401c2b40(int *param_1,longlong param_2,undefined8 param_3)
|
|
|
|
{
|
|
longlong lVar1;
|
|
int iVar2;
|
|
longlong lVar3;
|
|
undefined1 auStack_1a08 [32];
|
|
undefined1 local_19e8 [72];
|
|
undefined8 local_19a0;
|
|
undefined1 local_1998 [80];
|
|
undefined1 local_1948 [3200];
|
|
longlong local_cc8;
|
|
undefined4 local_cc0;
|
|
int local_cbc;
|
|
undefined1 local_cb8 [3200];
|
|
longlong local_38;
|
|
int local_2c;
|
|
ulonglong local_28;
|
|
undefined8 uStack_20;
|
|
|
|
uStack_20 = 0x1401c2b4e;
|
|
local_19a0 = 0xfffffffffffffffe;
|
|
local_28 = DAT_1403463c0 ^ (ulonglong)auStack_1a08;
|
|
if (*(longlong *)(param_2 + 0xc80) == 0) {
|
|
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (*(int *)(param_2 + 0xc8c) < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
lVar3 = 0;
|
|
*(undefined4 *)(param_2 + 0xc88) = 0;
|
|
FUN_14004eef0(param_3,0x13);
|
|
FUN_14004eef0(param_3,(char)*param_1);
|
|
if (*param_1 == 1) {
|
|
FUN_140153c40(param_3,param_1[1]);
|
|
if (*(longlong *)(param_1 + 2) == 0) {
|
|
if (*(longlong *)(param_1 + 4) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar2 = param_1[6];
|
|
}
|
|
else {
|
|
iVar2 = *(int *)(*(longlong *)(param_1 + 2) + 0x18);
|
|
}
|
|
FUN_14016cac0(param_3,(longlong)iVar2);
|
|
FUN_14016e080(local_1948,param_3);
|
|
FUN_14016ded0(param_2,local_1948);
|
|
if (local_cc8 == 0) {
|
|
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_cbc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_cc0 = 0;
|
|
lVar1 = *(longlong *)(param_1 + 2);
|
|
if ((lVar1 == 0) && (*(longlong *)(param_1 + 4) == 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
if (*(longlong *)(param_1 + 4) == 0) {
|
|
if (lVar1 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
if (*(int *)(lVar1 + 0x18) != 0) {
|
|
lVar3 = *(longlong *)(lVar1 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
lVar3 = *(longlong *)(param_1 + 4);
|
|
if (lVar3 == 0) {
|
|
FUN_14016d300(local_1998,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_1998,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
}
|
|
FUN_14016de40(param_2,lVar3);
|
|
}
|
|
else if (*param_1 == 2) {
|
|
if ((*(longlong **)(param_1 + 8) == (longlong *)0x0) ||
|
|
(lVar3 = **(longlong **)(param_1 + 8), lVar3 == 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
FUN_1401c3450(lVar3,param_3);
|
|
FUN_140153c40(param_3,param_1[0xd]);
|
|
FUN_140153c40(param_3,param_1[0xc]);
|
|
FUN_14016e080(local_cb8,param_3);
|
|
FUN_14016ded0(param_2,local_cb8);
|
|
if (local_38 == 0) {
|
|
FUN_14016d300(local_19e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_19e8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_2c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|