Created
July 1, 2019 06:48
-
-
Save ammarfaizi2/17cb0de599edfb27ceba6bdf507f37af to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void FUN_0037670c(longlong lParm1) | |
{ | |
bool bVar1; | |
undefined8 *puVar2; | |
undefined *puVar3; | |
char cVar4; | |
bool bVar5; | |
byte bVar6; | |
longlong in_tpidr_el0; | |
size_t sVar7; | |
int iVar8; | |
longlong lVar9; | |
undefined8 *__ptr; | |
undefined8 *puVar10; | |
ulonglong uVar11; | |
byte *__dest; | |
byte *__ptr_00; | |
void *__dest_00; | |
uint uVar12; | |
char *__s; | |
char *__s1; | |
undefined8 uVar13; | |
longlong lVar14; | |
longlong *plVar15; | |
undefined8 uVar16; | |
code *pcVar17; | |
uint local_128 [25]; | |
byte abStack196 [40]; | |
char acStack156 [39]; | |
char cStack117; | |
undefined local_74; | |
longlong local_68; | |
local_68 = *(longlong *)(in_tpidr_el0 + 0x28); | |
if (*(longlong *)(lParm1 + 0x18) == 0) { | |
lVar9 = FUN_00307a20(); | |
lVar9 = (**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2d8))(); | |
*(longlong *)(lParm1 + 0x18) = lVar9; | |
if (lVar9 == 0) goto LAB_00376b98; | |
} | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2e0)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
if (*(char *)(lVar9 + 0x1b) != '\0') { | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x308)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18),&UNK_004a5eb1); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
} | |
if (*(int *)(lVar9 + 0x94) != 0) { | |
uVar12 = 0; | |
do { | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x308)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18), | |
*(undefined8 *) | |
(*(longlong *)(*(longlong *)(lParm1 + 0x10) + 0x78) + (ulonglong)uVar12 * 8)); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
uVar12 = uVar12 + 1; | |
} while (uVar12 < *(uint *)(lVar9 + 0x94)); | |
} | |
if (*(char *)(lVar9 + 0x1b) == '\0') { | |
bVar6 = 0; | |
LAB_003769d4: | |
lVar9 = FUN_00307a20(); | |
plVar15 = *(longlong **)(lVar9 + 0x10); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
uVar16 = *(undefined8 *)(lParm1 + 0x18); | |
puVar3 = &DAT_00637778; | |
uVar13 = *(undefined8 *)(lVar9 + 0x28); | |
pcVar17 = *(code **)(*plVar15 + 0x328); | |
sVar7 = strlen(&DAT_00637778); | |
if (sVar7 == 0) { | |
puVar3 = (undefined *)0x0; | |
} | |
(*pcVar17)(plVar15,uVar16,uVar13,puVar3,lVar9,FUN_00376e7c,FUN_00376e94,FUN_003771c4); | |
lVar9 = FUN_00307a20(); | |
iVar8 = (**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2f0)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
*(longlong *)(lVar9 + 0x20) = (longlong)iVar8; | |
if (iVar8 != 0) goto LAB_00376af8; | |
lVar9 = FUN_00307a20(); | |
lVar9 = (**(code **)(**(longlong **)(lVar9 + 0x10) + 0x330)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
lVar14 = *(longlong *)(lParm1 + 0x10); | |
*(longlong *)(lVar14 + 0x10) = lVar9; | |
*(undefined8 *)(lVar14 + 0x50) = *(undefined8 *)(lVar14 + 0x58); | |
*(undefined8 *)(lVar14 + 0x40) = *(undefined8 *)(lVar14 + 0x48); | |
if ((bool)(bVar6 & lVar9 == 200)) { | |
__dest = (byte *)operator.new[](*(int *)(lVar14 + 0x68) + 1); | |
memcpy(__dest,*(void **)(lVar14 + 0x60),*(size_t *)(lVar14 + 0x68)); | |
__dest[(ulonglong)*(uint *)(lVar14 + 0x68)] = 0; | |
sVar7 = strlen((char *)__dest); | |
__ptr_00 = (byte *)malloc(sVar7 + 1); | |
if (__ptr_00 == (byte *)0x0) { | |
local_128[0] = 0; | |
*(undefined8 *)(lVar14 + 0x10) = 500; | |
} | |
else { | |
FUN_00318f18(__dest,__ptr_00,local_128); | |
} | |
_ZdaPv(__dest); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
if (*(longlong *)(lVar9 + 0x10) == 200) { | |
lVar14 = *(longlong *)(lVar9 + 0x40); | |
sVar7 = strlen(acStack156); | |
uVar11 = (ulonglong)sVar7 + lVar14; | |
__dest_00 = operator.new[]((int)uVar11 + 1); | |
memcpy(__dest_00,*(void **)(lVar9 + 0x50),(size_t)*(undefined8 *)(lVar9 + 0x40)); | |
strcpy((char *)((longlong)__dest_00 + *(longlong *)(lVar9 + 0x40)),acStack156); | |
lVar9 = FUN_00307a20(); | |
uVar11 = (**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2a0)) | |
(*(longlong **)(lVar9 + 0x10),__dest_00,uVar11 & 0xffffffff,__ptr_00, | |
(ulonglong)local_128[0]); | |
if ((uVar11 & 1) == 0) { | |
*(undefined8 *)(*(longlong *)(lParm1 + 0x10) + 0x10) = 500; | |
} | |
_ZdaPv(__dest_00); | |
} | |
free(__ptr_00); | |
} | |
} | |
else { | |
if (*(char ***)(lVar9 + 0x80) == (char **)0x0) { | |
bVar6 = 0; | |
LAB_003769bc: | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x310)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
goto LAB_003769d4; | |
} | |
__s1 = **(char ***)(lVar9 + 0x80); | |
if (__s1 == (char *)0x0) { | |
bVar6 = 0; | |
LAB_003769b4: | |
if (*(char *)(lVar9 + 0x1b) == '\0') goto LAB_003769d4; | |
goto LAB_003769bc; | |
} | |
bVar6 = 0; | |
uVar12 = 0; | |
bVar5 = false; | |
__s = __s1; | |
LAB_00376828: | |
do { | |
__s = __s; | |
__s = __s + 1; | |
cVar4 = *__s; | |
if (cVar4 != '=') { | |
if (cVar4 != '\0') goto LAB_00376828; | |
} | |
if (cVar4 != '\0') { | |
*__s = '\0'; | |
lVar9 = FUN_00307a20(); | |
plVar15 = *(longlong **)(lVar9 + 0x10); | |
uVar16 = *(undefined8 *)(lParm1 + 0x18); | |
pcVar17 = *(code **)(*plVar15 + 800); | |
sVar7 = strlen(__s); | |
(*pcVar17)(plVar15,uVar16,__s1,(ulonglong)sVar7,__s); | |
iVar8 = strncmp(__s1,"request_data",0xc); | |
if (iVar8 == 0) { | |
__ptr = (undefined8 *)operator.new(0x180); | |
__ptr[0x2f] = 0; | |
puVar10 = FUN_0037ef98(); | |
puVar2 = puVar10 + 0xc; | |
if (*(char *)(lParm1 + 0xc) != '\0') { | |
puVar2 = puVar10 + 0x10; | |
} | |
sVar7 = strlen(__s); | |
uVar11 = FUN_00376c74(__ptr,__s,sVar7,puVar2,*(size_t *)(puVar10 + 0x15), | |
(longlong)abStack196); | |
if ((uVar11 & 1) == 0) { | |
bVar5 = true; | |
} | |
else { | |
__s1 = &cStack117; | |
lVar9 = 0x13; | |
do { | |
cVar4 = "0123456789abcdef"[(ulonglong)abStack196[lVar9] & 0xf]; | |
__s1[-1] = "0123456789abcdef"[(ulonglong)(abStack196[lVar9] >> 4)]; | |
*__s1 = cVar4; | |
bVar1 = 0 < lVar9; | |
__s1 = __s1 + -2; | |
lVar9 = lVar9 + -1; | |
} while (bVar1); | |
local_74 = 0; | |
snprintf((char *)local_128,100,"X-Message-Code: %s",acStack156); | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x308)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18),local_128); | |
} | |
if ((void *)__ptr[0x2f] != (void *)0x0) { | |
_ZdaPv((void *)__ptr[0x2f]); | |
} | |
_ZdlPv(__ptr); | |
bVar6 = 1; | |
} | |
*__s = '='; | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
} | |
uVar12 = uVar12 + 1; | |
__s1 = *(char **)(*(longlong *)(lVar9 + 0x80) + (ulonglong)uVar12 * 8); | |
__s = __s1; | |
} while (__s1 != (char *)0x0); | |
if (!bVar5) goto LAB_003769b4; | |
*(undefined8 *)(lVar9 + 0x20) = 2; | |
LAB_00376af8: | |
*(undefined8 *)(lVar9 + 0x10) = 500; | |
} | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2f8)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x2e8)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
lVar9 = FUN_00307a20(); | |
(**(code **)(**(longlong **)(lVar9 + 0x10) + 0x300)) | |
(*(longlong **)(lVar9 + 0x10),*(undefined8 *)(lParm1 + 0x18)); | |
*(undefined8 *)(lParm1 + 0x18) = 0; | |
if ((*(char *)(*(longlong *)(lParm1 + 0x10) + 0x19) != '\0') && | |
(plVar15 = *(longlong **)(*(longlong *)(lParm1 + 0x10) + 0x38), plVar15 != (longlong *)0x0)) { | |
iVar8 = (**(code **)(*plVar15 + 0x18))(); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
if (iVar8 != 0) { | |
*(undefined8 *)(lVar9 + 0x20) = 0x17; | |
} | |
if (*(longlong **)(lVar9 + 0x38) != (longlong *)0x0) { | |
(**(code **)(**(longlong **)(lVar9 + 0x38) + 8))(); | |
lVar9 = *(longlong *)(lParm1 + 0x10); | |
} | |
*(undefined8 *)(lVar9 + 0x38) = 0; | |
} | |
LAB_00376b98: | |
if (*(longlong *)(in_tpidr_el0 + 0x28) != local_68) { | |
/* WARNING: Subroutine does not return */ | |
__stack_chk_fail(); | |
} | |
return; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment