server-re/decomp/MessageServer_Release_x64/full/functions/0x14006ef70.c

459 lines
14 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x14006ef70 FUN_14006ef70
* 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_14006ef70(undefined4 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
{
longlong *plVar1;
undefined *puVar2;
undefined4 *puVar3;
undefined4 *puVar4;
errno_t eVar5;
uint uVar6;
uint uVar7;
uint uVar8;
uint uVar9;
undefined8 uVar10;
uint *puVar11;
uint *puVar12;
longlong *plVar13;
longlong *plVar14;
longlong *plVar15;
int *piVar16;
longlong lVar17;
char **ppcVar18;
char *pcVar19;
undefined *puVar20;
wchar_t *pwVar21;
undefined2 *puVar22;
LPCWSTR pWVar23;
uint *puVar24;
undefined8 *puVar25;
uint *puVar26;
uint uVar27;
uint uVar28;
wchar_t *pwVar29;
undefined8 uVar30;
ulonglong uVar31;
undefined **ppuVar32;
undefined1 auStack_2c58 [32];
uint *local_2c38;
uint *local_2c30;
longlong *local_2c28;
undefined1 local_2c20;
undefined *local_2c18;
undefined *local_2c10;
int local_2c08 [2];
undefined *local_2c00;
undefined4 *local_2bf8;
undefined8 local_2bf0;
char *local_2be8;
char local_2be0 [136];
undefined1 *local_2b58;
undefined1 local_2b50 [136];
undefined4 local_2ac8 [392];
wchar_t local_24a8 [548];
WCHAR local_2060 [4098];
undefined2 local_5c;
undefined4 local_58;
undefined4 local_54;
ulonglong local_38;
undefined8 local_30;
local_30 = 0x14006ef8c;
local_2bf0 = 0xfffffffffffffffe;
local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_2c58;
local_2bf8 = param_1;
FUN_140071820(local_2ac8);
plVar1 = (longlong *)(param_1 + 4);
plVar15 = (longlong *)0x0;
uVar28 = 0;
plVar13 = plVar15;
if ((undefined8 *)*plVar1 != (undefined8 *)0x0) {
plVar13 = *(longlong **)*plVar1;
}
FUN_140071840((longlong)local_2ac8,(longlong)plVar13);
plVar13 = plVar15;
if ((undefined8 *)*plVar1 != (undefined8 *)0x0) {
plVar13 = *(longlong **)*plVar1;
}
FUN_1400718a0((longlong)local_2ac8,(longlong)plVar13);
FUN_140071900((longlong)local_2ac8,0);
plVar13 = plVar15;
if ((undefined8 *)*plVar1 != (undefined8 *)0x0) {
plVar13 = *(longlong **)*plVar1;
}
piVar16 = local_2c08;
uVar10 = FUN_140071960((longlong)local_2ac8,(longlong)plVar13,piVar16);
if ((char)uVar10 == '\0') {
return;
}
uVar27 = 0;
if (local_2c08[0] != 0) {
lVar17 = FUN_14006e930((longlong)param_1,plVar13,piVar16,param_4);
if ((char)lVar17 != '\0') {
return;
}
local_2c18 = (undefined *)0x0;
FUN_14006e8a0(plVar1,(longlong *)&local_2c18);
*param_1 = 3;
return;
}
plVar13 = plVar15;
if ((undefined8 *)*plVar1 != (undefined8 *)0x0) {
plVar13 = *(longlong **)*plVar1;
}
FUN_1400717a0((longlong)plVar13,'\x01');
param_1[10] = 0;
FUN_14006ddf0(local_24a8);
local_58 = 2;
local_54 = 4;
local_5c = 0x50;
uVar10 = 4;
pwVar29 = L"http";
eVar5 = wcsncpy_s(local_24a8,0x21,L"http",4);
if (eVar5 != 0) {
if (eVar5 == 0xc) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x8007000e);
}
if ((eVar5 == 0x16) || (eVar5 == 0x22)) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80070057);
}
if (eVar5 != 0x50) {
/* WARNING: Subroutine does not return */
FUN_1400064e0(0x80004005);
}
}
pwVar21 = *(wchar_t **)(param_1 + 2);
if (*(wchar_t **)(param_1 + 2) == (wchar_t *)0x0) {
pwVar21 = (wchar_t *)PTR_DAT_1401ac010;
}
FUN_14006dd40((longlong)local_24a8,pwVar21);
FUN_14006e2b0(local_24a8,0);
puVar22 = &DAT_14015cd00;
plVar13 = (longlong *)(param_1 + 2);
FUN_140008030(plVar13,&DAT_14015cd00,pwVar29,uVar10);
puVar20 = PTR_s_GET__PNReport_ReportError_php_Te_1401ac298;
FUN_14006cb70(plVar13,puVar22,pwVar29,uVar10);
puVar26 = (uint *)PTR_DAT_1401ac008;
local_2c30 = (uint *)PTR_DAT_1401ac008;
uVar6 = FUN_14006ca90(puVar20);
uVar9 = uVar27;
if ((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar9 = *(uint *)((longlong)puVar26 + -8);
}
uVar7 = uVar6;
if ((((int)uVar6 <= (int)uVar9) && (uVar7 = uVar27, puVar26 != (uint *)0x0)) &&
(puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = *(uint *)((longlong)puVar26 + -8);
}
uVar9 = 1;
if (1 < (int)uVar7) {
uVar9 = uVar7;
}
uVar7 = uVar27;
if ((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = *(uint *)((longlong)puVar26 + -8);
}
if ((int)uVar7 < (int)uVar9) {
if (puVar26 == (uint *)0x0) {
puVar26 = (uint *)PTR_DAT_1401ac008;
}
local_2c30 = puVar26;
if ((int)uVar9 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
if (uVar9 == 0) {
FUN_140008440((longlong *)&local_2c30);
}
else {
uVar7 = uVar27;
if ((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = puVar26[-2];
}
if (uVar9 != uVar7) {
puVar11 = (uint *)FUN_14006cbf0((longlong)(int)uVar9 + 9);
if (puVar11 != (uint *)0x0) {
*puVar11 = 0;
puVar11[1] = 1;
}
*puVar11 = uVar9;
uVar7 = uVar27;
if ((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = puVar26[-2];
}
puVar12 = (uint *)PTR_DAT_1401ac008;
if ((int)uVar9 < (int)uVar7) {
LAB_14006f210:
if (puVar26 != (uint *)0x0) {
puVar12 = puVar26;
}
}
else {
uVar9 = uVar27;
if (puVar26 != (uint *)0x0) {
if (puVar26 != (uint *)PTR_DAT_1401ac008) {
uVar9 = puVar26[-2];
}
goto LAB_14006f210;
}
}
FUN_14006cac0(puVar11 + 2,puVar12,uVar9);
FUN_140008440((longlong *)&local_2c30);
local_2c30 = puVar11 + 2;
}
}
}
FUN_140053e30((longlong *)&local_2c30);
puVar26 = local_2c30;
puVar11 = local_2c30;
if (local_2c30 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_1401ac008;
}
FUN_14006cac0(puVar11,puVar20,uVar6);
puVar11 = puVar26;
if (puVar26 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_1401ac008;
}
uVar6 = FUN_14006ca90((char *)puVar11);
uVar9 = uVar28;
if (0 < (int)uVar6) {
uVar9 = uVar6;
}
uVar7 = 0;
uVar6 = uVar7;
if ((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) {
uVar6 = puVar26[-2];
}
if (((int)uVar9 < (int)uVar6) || (uVar9 = uVar7, puVar26 == (uint *)0x0)) {
LAB_14006f2a1:
if (((puVar26 != (uint *)PTR_DAT_1401ac008) && (puVar26 != (uint *)0x0)) &&
(puVar11 = puVar26 + -2, puVar11 != (uint *)0x0)) {
*puVar11 = uVar9;
*(undefined1 *)((longlong)(int)uVar9 + 8 + (longlong)puVar11) = 0;
}
}
else if (puVar26 != (uint *)PTR_DAT_1401ac008) {
uVar9 = puVar26[-2];
goto LAB_14006f2a1;
}
local_2be8 = local_2be0;
uVar30 = 3;
pWVar23 = local_2060;
ppcVar18 = &local_2be8;
FUN_14006b570((longlong *)ppcVar18,pWVar23,3);
pcVar19 = local_2be8;
FUN_14006cb70(ppcVar18,pWVar23,uVar30,uVar10);
puVar11 = (uint *)PTR_DAT_1401ac008;
local_2c38 = (uint *)PTR_DAT_1401ac008;
uVar6 = FUN_14006ca90(pcVar19);
uVar9 = uVar7;
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar9 = *(uint *)((longlong)puVar11 + -8);
}
uVar8 = uVar6;
if ((((int)uVar6 <= (int)uVar9) && (uVar8 = uVar27, puVar11 != (uint *)0x0)) &&
(puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar8 = *(uint *)((longlong)puVar11 + -8);
}
uVar9 = 1;
if (1 < (int)uVar8) {
uVar9 = uVar8;
}
uVar8 = uVar7;
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar8 = *(uint *)((longlong)puVar11 + -8);
}
if ((int)uVar8 < (int)uVar9) {
if (puVar11 == (uint *)0x0) {
puVar11 = (uint *)PTR_DAT_1401ac008;
}
local_2c38 = puVar11;
if ((int)uVar9 < 0) {
/* WARNING: Subroutine does not return */
FUN_14006be00();
}
if (uVar9 == 0) {
FUN_140008440((longlong *)&local_2c38);
}
else {
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = puVar11[-2];
}
if (uVar9 != uVar7) {
puVar12 = (uint *)FUN_14006cbf0((longlong)(int)uVar9 + 9);
if (puVar12 != (uint *)0x0) {
*puVar12 = 0;
puVar12[1] = 1;
}
*puVar12 = uVar9;
uVar7 = uVar28;
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar7 = puVar11[-2];
}
puVar24 = (uint *)PTR_DAT_1401ac008;
if ((int)uVar9 < (int)uVar7) {
LAB_14006f3d4:
if (puVar11 != (uint *)0x0) {
puVar24 = puVar11;
}
}
else {
uVar9 = uVar27;
if (puVar11 != (uint *)0x0) {
if (puVar11 != (uint *)PTR_DAT_1401ac008) {
uVar9 = puVar11[-2];
}
goto LAB_14006f3d4;
}
}
FUN_14006cac0(puVar12 + 2,puVar24,uVar9);
FUN_140008440((longlong *)&local_2c38);
local_2c38 = puVar12 + 2;
}
}
}
FUN_140053e30((longlong *)&local_2c38);
puVar11 = local_2c38;
puVar12 = local_2c38;
if (local_2c38 == (uint *)0x0) {
puVar12 = (uint *)PTR_DAT_1401ac008;
}
uVar31 = (ulonglong)uVar6;
FUN_14006cac0(puVar12,pcVar19,uVar6);
puVar12 = puVar11;
if (puVar11 == (uint *)0x0) {
puVar12 = (uint *)PTR_DAT_1401ac008;
}
uVar9 = FUN_14006ca90((char *)puVar12);
uVar27 = uVar28;
if (0 < (int)uVar9) {
uVar27 = uVar9;
}
uVar9 = uVar28;
if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) {
uVar9 = puVar11[-2];
}
puVar12 = (uint *)PTR_DAT_1401ac008;
if (((int)uVar9 <= (int)uVar27) && (uVar27 = uVar28, puVar11 != (uint *)0x0)) {
if (puVar11 == (uint *)PTR_DAT_1401ac008) goto LAB_14006f482;
uVar27 = puVar11[-2];
}
if (((puVar11 != (uint *)PTR_DAT_1401ac008) && (puVar11 != (uint *)0x0)) &&
(puVar12 = puVar11 + -2, puVar12 != (uint *)0x0)) {
*puVar12 = uVar27;
*(undefined1 *)((longlong)(int)uVar27 + 8 + (longlong)puVar12) = 0;
}
LAB_14006f482:
pcVar19 = local_2be8;
if (local_2be8 != local_2be0) {
free(local_2be8);
}
FUN_14006cb70(pcVar19,puVar12,uVar31,uVar10);
local_2c10 = PTR_DAT_1401ac008;
local_2b58 = local_2b50;
FUN_14006b570((longlong *)&local_2b58,(LPCWSTR)PTR_u_www_nettention_co_kr_1401ac288,3);
FUN_14006e800((longlong *)&local_2c10,PTR_s_HTTP_1_1_User_Agent__Mozilla_5_0_1401ac2a0,local_2b58,
uVar10);
if (local_2b58 != local_2b50) {
free(local_2b58);
}
plVar13 = FUN_14006ed90((longlong *)&local_2c18,(longlong *)&local_2c30,(longlong *)&local_2c38,
uVar10);
ppuVar32 = &local_2c10;
plVar14 = FUN_14006ed90((longlong *)&local_2c00,plVar13,(longlong *)ppuVar32,uVar10);
puVar3 = local_2bf8;
plVar13 = (longlong *)(local_2bf8 + 8);
FUN_1400083a0(plVar13,plVar14,ppuVar32,uVar10);
if (((local_2c00 != (undefined *)0x0) && (local_2c00 != PTR_DAT_1401ac008)) &&
(local_2c00 + -8 != (undefined *)0x0)) {
plVar13 = (longlong *)FUN_14006cb70(plVar13,PTR_DAT_1401ac008,ppuVar32,uVar10);
local_2c28 = plVar13;
FUN_14006b350((int *)plVar13);
local_2c20 = 1;
piVar16 = (int *)(local_2c00 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_14006cc60(local_2c00 + -8);
}
FUN_14006b3e0((longlong)plVar13);
}
local_2c00 = PTR_DAT_1401ac008;
if (((local_2c18 != (undefined *)0x0) && (local_2c18 != PTR_DAT_1401ac008)) &&
(local_2c18 + -8 != (undefined *)0x0)) {
plVar13 = (longlong *)FUN_14006cb70(plVar13,PTR_DAT_1401ac008,ppuVar32,uVar10);
local_2c28 = plVar13;
FUN_14006b350((int *)plVar13);
local_2c20 = 1;
piVar16 = (int *)(local_2c18 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_14006cc60(local_2c18 + -8);
}
FUN_14006b3e0((longlong)plVar13);
}
puVar4 = local_2bf8;
puVar20 = *(undefined **)(puVar3 + 8);
if ((puVar20 != (undefined *)0x0) && (puVar20 != PTR_DAT_1401ac008)) {
uVar28 = *(uint *)(puVar20 + -8);
}
if (puVar20 == (undefined *)0x0) {
puVar20 = PTR_DAT_1401ac008;
}
if ((undefined8 *)*plVar1 != (undefined8 *)0x0) {
plVar15 = *(longlong **)*plVar1;
}
ppuVar32 = (undefined **)(ulonglong)((uVar28 - local_2bf8[10]) + 1);
puVar25 = (undefined8 *)(puVar20 + (int)local_2bf8[10]);
FUN_140073120((longlong)plVar15,puVar25,ppuVar32,uVar10);
puVar20 = local_2c10;
*puVar4 = 2;
if (((local_2c10 != (undefined *)0x0) && (local_2c10 != PTR_DAT_1401ac008)) &&
(puVar2 = local_2c10 + -8, puVar2 != (undefined *)0x0)) {
plVar15 = (longlong *)FUN_14006cb70(plVar15,puVar25,ppuVar32,uVar10);
local_2c28 = plVar15;
FUN_14006b350((int *)plVar15);
local_2c20 = 1;
piVar16 = (int *)(puVar20 + -4);
*piVar16 = *piVar16 + -1;
if (*piVar16 == 0) {
FUN_14006cc60(puVar2);
}
FUN_14006b3e0((longlong)plVar15);
}
if (((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1401ac008)) &&
(puVar11 + -2 != (uint *)0x0)) {
plVar15 = (longlong *)FUN_14006cb70(plVar15,puVar25,ppuVar32,uVar10);
local_2c28 = plVar15;
FUN_14006b350((int *)plVar15);
local_2c20 = 1;
puVar12 = puVar11 + -1;
*puVar12 = *puVar12 - 1;
if (*puVar12 == 0) {
FUN_14006cc60(puVar11 + -2);
}
FUN_14006b3e0((longlong)plVar15);
}
if (((puVar26 != (uint *)0x0) && (puVar26 != (uint *)PTR_DAT_1401ac008)) &&
(puVar26 + -2 != (uint *)0x0)) {
piVar16 = (int *)FUN_14006cb70(plVar15,puVar25,ppuVar32,uVar10);
local_2c28 = (longlong *)piVar16;
FUN_14006b350(piVar16);
local_2c20 = 1;
puVar11 = puVar26 + -1;
*puVar11 = *puVar11 - 1;
if (*puVar11 == 0) {
FUN_14006cc60(puVar26 + -2);
}
FUN_14006b3e0((longlong)piVar16);
}
return;
}