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

404 lines
11 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1400aa6e0 FUN_1400aa6e0
* 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_1400aa6e0(longlong param_1,longlong *param_2,longlong *param_3,longlong *param_4,
undefined8 param_5,undefined8 param_6,undefined4 param_7,undefined8 param_8,
uint param_9)
{
short sVar1;
undefined8 *puVar2;
longlong lVar3;
void *pvVar4;
errno_t eVar5;
int iVar6;
char *pcVar7;
char *pcVar8;
longlong lVar9;
undefined8 uVar10;
ulonglong uVar11;
char *_Source;
undefined2 *puVar12;
uint uVar13;
short *psVar14;
undefined1 *puVar15;
undefined1 *puVar16;
uint uVar17;
short *psVar18;
uint uVar19;
uint uVar20;
undefined *puStack_f30;
undefined1 auStack_f28 [32];
uint local_f08 [2];
char *local_f00;
uint local_ef8;
uint local_ef0;
char *local_ee8;
undefined8 local_ee0;
undefined8 local_ed8;
char *local_ed0;
char *local_ec8;
char *local_ec0;
undefined8 local_eb8;
int local_eb0;
undefined8 local_ea8;
undefined8 local_ea0;
__time64_t local_e98 [2];
short local_e88;
short local_e86;
undefined2 local_e84;
short local_e82;
short local_e80;
short local_e7e;
short local_e7c;
undefined2 local_e7a;
undefined8 local_e78;
undefined8 local_e70;
undefined8 local_e68;
ushort local_e5c;
undefined2 local_e58;
undefined6 uStack_e56;
undefined8 local_e48;
ulonglong local_e40;
tm local_e30;
undefined1 local_e08 [16];
undefined1 local_df8 [16];
undefined1 local_de8 [6];
ushort local_de2;
undefined1 local_dd8 [10];
ushort local_dce;
undefined1 local_dc8 [16];
undefined1 local_db8 [8];
ushort local_db0;
undefined1 local_da8 [8];
ushort local_da0;
undefined1 local_d98 [12];
ushort local_d8c;
undefined1 local_d88 [10];
ushort local_d7e;
undefined1 local_d78 [16];
undefined1 local_d68 [6];
ushort local_d62;
char local_d58;
undefined1 local_d57 [255];
char local_c58;
undefined1 local_c57 [511];
char local_a58;
undefined1 local_a57 [511];
char local_858;
undefined1 local_857 [1023];
char local_458;
undefined1 local_457 [1031];
ulonglong local_50;
puVar15 = auStack_f28;
local_e98[1] = 0xfffffffffffffffe;
local_50 = DAT_1403463c0 ^ (ulonglong)&local_eb8;
local_ea8 = param_5;
local_ea0 = param_6;
local_e68 = param_8;
local_d58 = '\0';
puStack_f30 = (undefined *)0x1400aa75a;
memset(local_d57,0,0xff);
local_c58 = '\0';
puStack_f30 = (undefined *)0x1400aa775;
memset(local_c57,0,0x1ff);
local_a58 = '\0';
puStack_f30 = (undefined *)0x1400aa790;
memset(local_a57,0,0x1ff);
local_458 = '\0';
puStack_f30 = (undefined *)0x1400aa7ab;
memset(local_457,0,0x3ff);
_Source = (char *)0x0;
if (*param_2 == 0) {
puStack_f30 = (undefined *)0x1400aa7be;
pcVar7 = operator_new(0x18);
pcVar8 = _Source;
if (pcVar7 != (char *)0x0) {
pcVar7[8] = '\0';
pcVar7[9] = '\0';
pcVar7[10] = '\0';
pcVar7[0xb] = '\0';
pcVar7[0xc] = '\0';
pcVar7[0xd] = '\0';
pcVar7[0xe] = '\0';
pcVar7[0xf] = '\0';
pcVar7[0x10] = '\x01';
pcVar7[0x11] = '\0';
pcVar7[0x12] = '\0';
pcVar7[0x13] = '\0';
pcVar7[0] = '\0';
pcVar7[1] = '\0';
pcVar7[2] = '\0';
pcVar7[3] = '\0';
pcVar7[4] = '\0';
pcVar7[5] = '\0';
pcVar7[6] = '\0';
pcVar7[7] = '\0';
pcVar8 = pcVar7;
}
*param_2 = (longlong)pcVar8;
if (pcVar8 == (char *)0x0) {
/* WARNING: Subroutine does not return */
puStack_f30 = &UNK_1400aa7e9;
FUN_140218220(0x8007000e);
}
}
param_2 = (longlong *)*param_2;
puVar16 = auStack_f28;
if (*param_2 == 0) goto LAB_1400aad6a;
pcVar8 = _Source;
if (param_2 != (longlong *)0x0) {
if (param_2[1] == 0) {
puStack_f30 = (undefined *)0x1400aa80b;
lVar9 = FUN_140218460(*param_2);
param_2[1] = lVar9;
}
pcVar8 = (char *)param_2[1];
}
puStack_f30 = (undefined *)0x1400aa82b;
strncpy(&local_d58,pcVar8,0x100);
puVar2 = (undefined8 *)*param_3;
pcVar8 = _Source;
if (puVar2 != (undefined8 *)0x0) {
if (puVar2[1] == 0) {
puStack_f30 = (undefined *)0x1400aa842;
uVar10 = FUN_140218460(*puVar2);
puVar2[1] = uVar10;
}
pcVar8 = (char *)puVar2[1];
}
puStack_f30 = (undefined *)0x1400aa862;
strncpy(&local_c58,pcVar8,0x200);
puVar2 = (undefined8 *)*param_4;
if (puVar2 != (undefined8 *)0x0) {
if (puVar2[1] == 0) {
puStack_f30 = (undefined *)0x1400aa879;
uVar10 = FUN_140218460(*puVar2);
puVar2[1] = uVar10;
}
_Source = (char *)puVar2[1];
}
puStack_f30 = (undefined *)0x1400aa899;
strncpy(&local_a58,_Source,0x200);
puStack_f30 = (undefined *)0x1400aa8a1;
local_e98[0] = _time64((__time64_t *)0x0);
local_eb8 = 0;
local_eb0 = 0;
puStack_f30 = (undefined *)0x1400aa8c3;
eVar5 = _localtime64_s(&local_e30,local_e98);
if (eVar5 == 0) {
local_e88 = (short)local_e30.tm_year + 0x76c;
local_e86 = (short)local_e30.tm_mon + 1;
local_e84 = (undefined2)local_e30.tm_wday;
local_e82 = (short)local_e30.tm_mday;
local_e80 = (short)local_e30.tm_hour;
local_e7e = (short)local_e30.tm_min;
local_e7c = (short)local_e30.tm_sec;
local_e7a = 0;
puStack_f30 = (undefined *)0x1400aa936;
iVar6 = Ordinal_184(&local_e88,&local_eb8);
local_e78 = 0;
local_e70 = 0;
if (iVar6 == 0) goto LAB_1400aa9b7;
puStack_f30 = (undefined *)0x1400aa953;
iVar6 = Ordinal_185(local_eb8,&local_e78);
if ((((iVar6 == 0) || (local_e88 != (short)local_e78)) || (local_e86 != local_e78._2_2_)) ||
(((local_e82 != local_e78._6_2_ || (local_e80 != (short)local_e70)) ||
((local_e7e != local_e70._2_2_ || (local_e7c != local_e70._4_2_)))))) goto LAB_1400aa9b7;
local_eb0 = 0;
puStack_f30 = (undefined *)0x1400aa9a9;
iVar6 = Ordinal_185(local_eb8,local_d98);
if (iVar6 == 0) goto LAB_1400aa9be;
uVar20 = (uint)local_d8c;
}
else {
LAB_1400aa9b7:
local_eb0 = 1;
LAB_1400aa9be:
uVar20 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aa9da;
iVar6 = Ordinal_185(local_eb8,local_dd8);
if (iVar6 == 0) goto LAB_1400aa9e8;
uVar19 = (uint)local_dce;
}
else {
LAB_1400aa9e8:
uVar19 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aaa04;
iVar6 = Ordinal_185(local_eb8,local_db8);
if (iVar6 == 0) goto LAB_1400aaa11;
uVar17 = (uint)local_db0;
}
else {
LAB_1400aaa11:
uVar17 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aaa2c;
iVar6 = Ordinal_185(local_eb8,local_de8);
if (iVar6 == 0) goto LAB_1400aaa39;
uVar13 = (uint)local_de2;
}
else {
LAB_1400aaa39:
uVar13 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aaa54;
Ordinal_185(local_eb8,local_e08);
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aaa7c;
Ordinal_185(local_eb8,local_dc8);
}
local_ec0 = &local_c58;
local_ec8 = &local_d58;
local_ed0 = (char *)CONCAT44(local_ed0._4_4_,param_7);
local_ed8 = local_ea8;
local_ee0 = local_e68;
local_ee8 = &local_a58;
local_f00 = (char *)CONCAT44(local_f00._4_4_,uVar17);
puStack_f30 = (undefined *)0x1400aaaf9;
local_f08[0] = uVar13;
local_ef8 = uVar19;
local_ef0 = uVar20;
sprintf(&local_458,
"%d/%d/%d %d:%d:%d\nmeaning = %s \nProcedureName = %s\nSource = %s [%d] Line\n%s \nDescription = %s"
);
local_f00 = &local_458;
local_f08[0] = param_9;
puStack_f30 = (undefined *)0x1400aab2d;
FUN_1400a6d80(*(undefined8 *)(param_1 + 0x118),"AdoError.Log","DB Error: %s\nCode = %lx\n%s",
local_ea0);
lVar9 = *(longlong *)(*(longlong *)(param_1 + 0x110) + 0x70);
puVar16 = auStack_f28;
if (lVar9 == 0) goto LAB_1400aad6a;
local_858 = '\0';
puStack_f30 = (undefined *)0x1400aab5c;
memset(local_857,0,0x3ff);
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aab71;
iVar6 = Ordinal_185(local_eb8,&local_e68);
if (iVar6 == 0) goto LAB_1400aab7c;
uVar20 = (uint)local_e5c;
}
else {
LAB_1400aab7c:
uVar20 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aab98;
iVar6 = Ordinal_185(local_eb8,local_d88);
if (iVar6 == 0) goto LAB_1400aaba6;
uVar19 = (uint)local_d7e;
}
else {
LAB_1400aaba6:
uVar19 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aabc2;
iVar6 = Ordinal_185(local_eb8,local_da8);
if (iVar6 == 0) goto LAB_1400aabcf;
uVar17 = (uint)local_da0;
}
else {
LAB_1400aabcf:
uVar17 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aabea;
iVar6 = Ordinal_185(local_eb8,local_d68);
if (iVar6 == 0) goto LAB_1400aabf7;
uVar13 = (uint)local_d62;
}
else {
LAB_1400aabf7:
uVar13 = 0xffffffff;
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aac12;
Ordinal_185(local_eb8,local_d78);
}
if (local_eb0 == 0) {
puStack_f30 = (undefined *)0x1400aac3a;
Ordinal_185(local_eb8,local_df8);
}
local_ed0 = &local_c58;
local_ed8 = CONCAT44(local_ed8._4_4_,param_7);
local_ee0 = local_ea0;
local_ee8 = (char *)local_ea8;
local_f00 = (char *)CONCAT44(local_f00._4_4_,uVar17);
puStack_f30 = (undefined *)0x1400aac98;
local_f08[0] = uVar13;
local_ef8 = uVar19;
local_ef0 = uVar20;
sprintf(&local_858,"%d/%d/%d %d:%d:%d-Src[ %s ] Fun[ %s ] Line[ %d ] %s");
puStack_f30 = (undefined *)0x1400aaca5;
iVar6 = lstrlenA(&local_858);
iVar6 = iVar6 + 1;
if (iVar6 < 0x40000000) {
uVar11 = (longlong)iVar6 * 2 + 0xf;
if (uVar11 <= (ulonglong)((longlong)iVar6 * 2)) {
uVar11 = 0xffffffffffffff0;
}
puStack_f30 = (undefined *)0x1400aacd5;
lVar3 = -(uVar11 & 0xfffffffffffffff0);
puVar15 = auStack_f28 + lVar3;
psVar14 = (short *)((longlong)&local_eb8 + lVar3);
if (psVar14 == (short *)0x0) goto LAB_1400aad0e;
*psVar14 = 0;
*(int *)((longlong)&local_f00 + lVar3) = iVar6;
*(short **)((longlong)local_f08 + lVar3) = psVar14;
*(undefined8 *)(auStack_f28 + lVar3 + -8) = 0x1400aad06;
iVar6 = MultiByteToWideChar(3,0,&local_858,-1,*(LPWSTR *)((longlong)local_f08 + lVar3),
*(int *)((longlong)&local_f00 + lVar3));
puVar16 = auStack_f28 + lVar3;
if (iVar6 == 0) {
psVar14 = (short *)0x0;
puVar16 = auStack_f28 + lVar3;
}
}
else {
LAB_1400aad0e:
psVar14 = (short *)0x0;
puVar16 = puVar15;
}
local_e40 = 7;
local_e48 = 0;
local_e58 = 0;
uVar11 = 0xffffffffffffffff;
psVar18 = psVar14;
do {
if (uVar11 == 0) break;
uVar11 = uVar11 - 1;
sVar1 = *psVar18;
psVar18 = psVar18 + 1;
} while (sVar1 != 0);
*(undefined8 *)(puVar16 + -8) = 0x1400aad41;
FUN_140056040(&local_e58,psVar14,~uVar11 - 1);
puVar12 = &local_e58;
if (7 < local_e40) {
puVar12 = (undefined2 *)CONCAT62(uStack_e56,local_e58);
}
*(undefined8 *)(puVar16 + -8) = 0x1400aad58;
FUN_14015bb10(lVar9,puVar12);
if (7 < local_e40) {
pvVar4 = (void *)CONCAT62(uStack_e56,local_e58);
*(undefined8 *)(puVar16 + -8) = 0x1400aad6a;
operator_delete(pvVar4);
}
LAB_1400aad6a:
*(undefined8 *)(puVar16 + -8) = 0x1400aad79;
return;
}