253 lines
7.8 KiB
C
253 lines
7.8 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401fefa0 FUN_1401fefa0
|
|
* 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_1401fefa0(longlong param_1,int *param_2)
|
|
|
|
{
|
|
int iVar1;
|
|
undefined4 uVar2;
|
|
longlong lVar3;
|
|
longlong lVar4;
|
|
int iVar5;
|
|
undefined1 auStack_2808 [32];
|
|
undefined4 *local_27e8;
|
|
undefined8 local_27d8;
|
|
int iStack_27d0;
|
|
undefined4 uStack_27cc;
|
|
undefined4 local_27c8 [2];
|
|
undefined8 local_27c0;
|
|
undefined4 local_27b8;
|
|
undefined4 uStack_27b4;
|
|
undefined4 local_27b0;
|
|
int local_27ac;
|
|
undefined4 local_27a0 [2];
|
|
undefined8 local_2798;
|
|
undefined1 local_2790;
|
|
undefined4 local_278c;
|
|
undefined1 local_2788;
|
|
undefined1 local_2787;
|
|
undefined8 local_2780;
|
|
undefined1 local_2778 [72];
|
|
undefined1 local_2730 [72];
|
|
undefined1 local_26e8 [72];
|
|
undefined1 local_26a0 [3200];
|
|
undefined1 *local_1a20;
|
|
undefined4 local_1a18;
|
|
undefined4 local_1a14;
|
|
undefined1 local_1a08 [8];
|
|
longlong local_1a00;
|
|
longlong local_19f8;
|
|
undefined4 local_19f0;
|
|
int local_19ec;
|
|
undefined1 local_19e0 [136];
|
|
undefined4 local_1958;
|
|
undefined4 uStack_1954;
|
|
undefined4 uStack_1950;
|
|
undefined4 uStack_194c;
|
|
undefined4 *local_cd8;
|
|
undefined4 local_cd0;
|
|
int local_ccc;
|
|
undefined1 local_cc8 [3200];
|
|
undefined1 *local_48;
|
|
int local_40;
|
|
int local_3c;
|
|
ulonglong local_38;
|
|
undefined8 uStack_30;
|
|
|
|
uStack_30 = 0x1401fefba;
|
|
local_2780 = 0xfffffffffffffffe;
|
|
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_2808;
|
|
iVar1 = *param_2;
|
|
uVar2 = DAT_14034c538;
|
|
if (iVar1 == 1) {
|
|
if (DAT_140346262 != '\0') {
|
|
uVar2 = 1;
|
|
}
|
|
}
|
|
else if ((iVar1 == 2) && (DAT_140346261 != '\0')) {
|
|
uVar2 = 1;
|
|
}
|
|
if (*(char *)(*(longlong *)(param_1 + 0x10) + 0x608) == '\0') {
|
|
local_ccc = 200;
|
|
local_cd0 = 0;
|
|
local_cd8 = &local_1958;
|
|
FUN_14016b440(local_27c8);
|
|
FUN_14016abe0(local_27c8);
|
|
FUN_14016b5a0(local_27c8,0x800);
|
|
FUN_14016b5a0(local_27c8,0);
|
|
FUN_1401c2b40(param_2,&local_1958,local_27c8);
|
|
local_2798 = 0;
|
|
local_2790 = 1;
|
|
local_278c = 0xffffffff;
|
|
local_2788 = 1;
|
|
local_2787 = DAT_140344dfc;
|
|
local_27a0[0] = uVar2;
|
|
FUN_1401fa510(*(longlong *)(param_1 + 0x10) + 0x668,&local_1958,local_27a0);
|
|
local_27d8 = &local_27c0;
|
|
FUN_14016d0e0(&local_27c0);
|
|
if (CONCAT44(uStack_27b4,local_27b8) != 0) {
|
|
if (local_27ac < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_27b0 = 0;
|
|
}
|
|
if (local_cd8 == (undefined4 *)0x0) {
|
|
FUN_14016d300(local_2778,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2778,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_ccc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
else if (iVar1 == 1) {
|
|
FUN_14016b440(local_1a08);
|
|
FUN_14016b0c0(local_1a08,local_19e0,0x80);
|
|
FUN_14004eef0(local_1a08,0x16);
|
|
FUN_140153c40(local_1a08,*(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x56c));
|
|
FUN_140153c40(local_1a08,param_2[1]);
|
|
FUN_14016aaa0(local_27a0,local_1a08);
|
|
if (*(longlong *)(param_2 + 2) == 0) {
|
|
if (*(longlong *)(param_2 + 4) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar1 = param_2[6];
|
|
}
|
|
else {
|
|
iVar1 = *(int *)(*(longlong *)(param_2 + 2) + 0x18);
|
|
}
|
|
FUN_14016cac0(local_1a08,(longlong)iVar1);
|
|
local_3c = 200;
|
|
lVar4 = 0;
|
|
local_40 = 0;
|
|
local_48 = local_cc8;
|
|
local_ccc = 200;
|
|
local_cd0 = 0;
|
|
local_cd8 = &local_1958;
|
|
if (local_1a00 == 0) {
|
|
if (local_19f8 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
local_19f0 = *(undefined4 *)(local_1a00 + 0x18);
|
|
}
|
|
lVar3 = local_19f8;
|
|
if (local_19f8 == 0) {
|
|
if (local_1a00 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
lVar3 = lVar4;
|
|
if (*(int *)(local_1a00 + 0x18) != 0) {
|
|
lVar3 = *(longlong *)(local_1a00 + 0x10);
|
|
}
|
|
}
|
|
local_cd0 = 1;
|
|
local_27d8._0_4_ = (undefined4)lVar3;
|
|
local_27d8._4_4_ = (undefined4)((ulonglong)lVar3 >> 0x20);
|
|
local_1958 = (undefined4)local_27d8;
|
|
uStack_1954 = local_27d8._4_4_;
|
|
uStack_194c = uStack_27cc;
|
|
local_27d8 = (longlong *)lVar3;
|
|
iStack_27d0 = local_19f0;
|
|
uStack_1950 = local_19f0;
|
|
FUN_14016ded0(local_cc8,&local_1958);
|
|
if (local_cd8 == (undefined4 *)0x0) {
|
|
FUN_14016d300(local_2778,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2778,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_ccc < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_cd0 = 0;
|
|
lVar3 = *(longlong *)(param_2 + 2);
|
|
if (lVar3 == 0) {
|
|
if (*(longlong *)(param_2 + 4) == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
iVar1 = param_2[6];
|
|
}
|
|
else {
|
|
iVar1 = *(int *)(lVar3 + 0x18);
|
|
}
|
|
if (*(longlong *)(param_2 + 4) == 0) {
|
|
if (lVar3 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
if (*(int *)(lVar3 + 0x18) != 0) {
|
|
lVar4 = *(longlong *)(lVar3 + 0x10);
|
|
}
|
|
}
|
|
else {
|
|
lVar4 = *(longlong *)(param_2 + 4);
|
|
if (lVar4 == 0) {
|
|
FUN_14016d300(local_26e8,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_26e8,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
}
|
|
iStack_27d0 = iVar1;
|
|
if (local_48 == (undefined1 *)0x0) {
|
|
FUN_14016d300(local_2730,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2730,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_40 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
iVar5 = local_40 + 1;
|
|
if ((iVar5 < 0) || (local_3c < iVar5)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
*(longlong *)(local_48 + (longlong)local_40 * 0x10) = lVar4;
|
|
*(ulonglong *)(local_48 + (longlong)local_40 * 0x10 + 8) = CONCAT44(uStack_27cc,iVar1);
|
|
local_27d8 = (longlong *)local_26a0;
|
|
local_1a14 = 200;
|
|
local_1a18 = 0;
|
|
local_1a20 = local_26a0;
|
|
local_40 = iVar5;
|
|
FUN_14019b4e0(&local_48,&local_1a20);
|
|
local_27c8[0] = DAT_14034c538;
|
|
local_27c0 = DAT_14034c530;
|
|
local_27b8 = CONCAT31(local_27b8._1_3_,DAT_14034c540);
|
|
uStack_27b4 = 0xffffffff;
|
|
local_27b0._0_2_ = CONCAT11(DAT_140344dfc,DAT_14034c560);
|
|
uVar2 = (**(code **)(**(longlong **)(param_1 + 0x10) + 8))();
|
|
local_27e8 = local_27c8;
|
|
FUN_1401c8090(*(undefined8 *)(*(longlong *)(param_1 + 0x10) + 0x670),uVar2,1,local_26a0);
|
|
if (local_48 == (undefined1 *)0x0) {
|
|
FUN_14016d300(local_2730,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_2730,(ThrowInfo *)&DAT_1403417f8);
|
|
}
|
|
if (local_3c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_40 = 0;
|
|
FUN_14016aac0(local_27a0);
|
|
local_27d8 = &local_1a00;
|
|
FUN_14016d0e0(&local_1a00);
|
|
if ((local_19f8 != 0) && (local_19ec < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|