Function at 0x521e40
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x726a9c
mov eax, dword fs:[0]
push eax
mov eax, 0x155fc
call fcn.006f5ae0
mov eax, dword [0x7db1e8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [ebp + 0x10]
movq xmm0, qword [str.Foxmail.Addins]
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x15470], eax
mov eax, dword [0x738150]
mov dword [ebp - 0x15448], eax
mov ax, word [0x738154]
mov dword [ebp - 0x15460], ebx
mov dword [ebp - 0x1543c], 0xf
mov dword [ebp - 0x15440], 0xe
movq qword [ebp - 0x15450], xmm0
mov word [ebp - 0x15444], ax
mov byte [ebp - 0x15442], 0
push 1
lea eax, [ebp - 0x15450]
mov dword [ebp - 4], 0
push 0x400
push eax
call fcn.00555fc0
add esp, 4
lea ecx, [ebp - 0x15558]
push eax
call fcn.00552eb0
mov edx, dword [ebp - 0x1543c]
mov byte [ebp - 4], 2
cmp edx, 0x10
jb 0x521f33
mov ecx, dword [ebp - 0x15450]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x521f29
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x522496
push edx
push ecx
call fcn.006f4b9f
add esp, 8
xor eax, eax
mov dword [ebp - 0x15438], 0
mov dword [ebp - 0x15428], 0
mov dword [ebp - 0x15424], 7
mov word [ebp - 0x15438], ax
lea eax, [ebp - 0x420]
mov byte [ebp - 4], 3
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
cmp eax, 0x104
ja 0x5223b9
test eax, eax
je 0x5223b9
test esi, esi
jne 0x521fcb
lea eax, [ebp - 0x218]
push eax
push esi
push str.CMTF
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x5223b9
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x521fb2
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
jmp 0x521fe1
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x521fd0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x15438]
call fcn.004da1e0
cmp dword [ebp - 0x15424], 8
lea eax, [ebp - 0x15438]
push 1
cmovae eax, dword [ebp - 0x15438]
lea ecx, [ebp - 0x15608]
push 0x40
push 0x20
push eax
call fcn.00520a70
cmp dword [ebp - 0x155b8], 0
mov byte [ebp - 4], 4
je 0x522228
cmp byte [ebp + 0x14], 0
mov dword [edi + 0x24], 0
je 0x5220bb
push 0x38
lea eax, [ebp - 0x1420]
mov dword [ebp - 0x15490], 0
push str.1.1.3
mov dword [ebp - 0x154b0], eax
lea eax, [ebp - 0x154b0]
push 0xfffffffffffffff1
push eax
mov dword [ebp - 0x1548c], 0
mov dword [ebp - 0x15488], 0
mov dword [ebp - 0x154a4], 0
mov dword [ebp - 0x154ac], 0
mov dword [ebp - 0x154a0], 0x14000
call fcn.00401060
add esp, 0x10
test eax, eax
jne 0x5220bb
lea eax, [ebp - 0x154b0]
push ebx
push eax
call fcn.00520d80
add esp, 8
test eax, eax
je 0x5220bb
lea eax, [ebp - 0x154b0]
push eax
call fcn.00402830
add esp, 4
mov ecx, dword [sym.imp.WININET.dll_InternetReadFile]
xor ebx, ebx
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x15458], ebx
mov dword [ebp - 0x1545c], ecx
mov dword [ebp - 0x15464], eax
nop word [eax + eax]
cmp byte [edi + 0x20], 0
jne 0x52221d
lea esi, [edi + 0x21]
mov byte [esi], 1
mov dword [ebp - 0x15474], esi
lea eax, [ebp - 0x15454]
mov byte [ebp - 4], 5
push eax
push 0x1000
lea eax, [ebp - 0x1420]
push eax
push dword [ebp - 0x15460]
call ecx
mov dword [ebp - 0x15468], eax
test eax, eax
jne 0x522135
call dword [ebp - 0x15464]
mov ecx, edi
mov dword [edi + 4], eax
call fcn.00521b40
mov eax, dword [ebp - 0x15468]
mov byte [ebp - 4], 4
mov byte [esi], 0
test eax, eax
je 0x5223a3
cmp byte [ebp + 0x14], 0
je 0x52219c
lea eax, [ebp - 0x1546c]
mov ecx, edi
push eax
lea eax, [ebp - 0x15420]
push eax
push dword [ebp - 0x15454]
lea eax, [ebp - 0x1420]
push eax
lea eax, [ebp - 0x154b0]
push eax
lea eax, [ebp - 0x15608]
push eax
call fcn.00520f40
test al, al
je 0x5221ea
mov esi, dword [ebp - 0x15458]
mov eax, dword [ebp - 0x15454]
add esi, eax
add ebx, dword [ebp - 0x1546c]
mov ecx, esi
mov dword [ebp - 0x15458], esi
jmp 0x5221c6
push 0
push dword [ebp - 0x15454]
lea eax, [ebp - 0x1420]
push eax
lea ecx, [ebp - 0x15608]
call fcn.00450260
mov eax, dword [ebp - 0x15454]
add ebx, eax
mov esi, dword [ebp - 0x15458]
mov ecx, ebx
mov dword [edi + 0x24], ecx
cmp byte [edi + 0x28], 0
je 0x5221db
mov eax, dword [edi]
mov ecx, edi
call dword [eax]
mov eax, dword [ebp - 0x15454]
test eax, eax
je 0x52223a
mov ecx, dword [ebp - 0x1545c]
jmp 0x5220e0
mov eax, dword [ebp - 0x15558]
lea ecx, [ebp - 0x15558]
call dword [eax + 0x34]
lea eax, [ebp - 0x15520]
mov dword [ebp - 0x1550c], 6
push str.CHttpClient::_InternetReadFile_DecodeData_failed_
push eax
call fcn.004cb4e0
push eax
call fcn.004cbd50
add esp, 0xc
lea ecx, [ebp - 0x15608]
call fcn.005224b0
lea ecx, [ebp - 0x15608]
xor esi, esi
call fcn.00450b50
jmp 0x5223ee
lea ecx, [ebp - 0x15608]
call fcn.005224b0
test ebx, ebx
je 0x522336
test esi, esi
je 0x522336
imul eax, esi, 0x64
xor edx, edx
div ebx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x7361c0]
mov eax, esi
shr eax, 0xa
mov dword [ebp - 0x1545c], eax
movsd qword [ebp - 0x15478], xmm0
test eax, eax
je 0x5222b2
mov edi, ebx
shr edi, 0xa
test edi, edi
je 0x5222b2
mov eax, dword [ebp - 0x15558]
lea ecx, [ebp - 0x15558]
call dword [eax + 0x34]
push str._KB_
push edi
push str._KB__NoZip:
push dword [ebp - 0x1545c]
jmp 0x5222cd
mov eax, dword [ebp - 0x15558]
lea ecx, [ebp - 0x15558]
call dword [eax + 0x34]
push 0x73ba44
push ebx
push str._B__NoZip:
push esi
movsd xmm0, qword [ebp - 0x15478]
lea eax, [ebp - 0x15520]
push str.___Zip:
sub esp, 8
mov dword [ebp - 0x1550c], 6
movsd qword [esp], xmm0
push str.CHttpClient::_InternetReadFile_download_Zip_percent:
push eax
call fcn.004cb4e0
add esp, 8
mov ecx, eax
call fcn.00501a90
push eax
call fcn.004cb4e0
add esp, 8
mov ecx, eax
call fcn.004dd640
push eax
call fcn.004cb4e0
add esp, 8
mov ecx, eax
call fcn.004dd640
push eax
call fcn.004cb4e0
push eax
call fcn.004cbd50
add esp, 0xc
cmp dword [ebp - 0x15424], 8
lea edx, [ebp - 0x15438]
jb 0x522370
mov edx, dword [ebp - 0x15438]
test edx, edx
jne 0x522370
xor ecx, ecx
push ecx
mov ecx, dword [ebp - 0x15470]
push edx
call fcn.004de900
lea ecx, [ebp - 0x15608]
mov esi, 1
call fcn.00450b50
jmp 0x5223ee
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x522375
sub ecx, esi
sar ecx, 1
push ecx
mov ecx, dword [ebp - 0x15470]
push edx
call fcn.004de900
lea ecx, [ebp - 0x15608]
mov esi, 1
call fcn.00450b50
jmp 0x5223ee
lea ecx, [ebp - 0x15608]
mov dword [edi + 4], 0
xor esi, esi
call fcn.00450b50
jmp 0x5223ee
mov eax, dword [ebp - 0x15558]
lea ecx, [ebp - 0x15558]
call dword [eax + 0x34]
lea eax, [ebp - 0x15520]
mov dword [ebp - 0x1550c], 6
push str.CHttpClient::_InternetReadFile_GetCoremailTempFile_failed_
push eax
call fcn.004cb4e0
push eax
call fcn.004cbd50
add esp, 0xc
xor esi, esi
mov edx, dword [ebp - 0x15424]
mov byte [ebp - 4], 2
cmp edx, 8
jb 0x52242e
mov ecx, dword [ebp - 0x15438]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x522424
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x52249b
push edx
push ecx
call fcn.006f4b9f
add esp, 8
xor eax, eax
mov dword [ebp - 0x15428], 0
lea ecx, [ebp - 0x15558]
mov dword [ebp - 0x15424], 7
mov word [ebp - 0x15438], ax
call fcn.00553780
lea eax, [ebp - 0x154f8]
mov dword [ebp - 4], 6
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.006f3999
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.006f4db8
mov esp, ebp
pop ebp
ret 0x10
call fcn.006fb96e
call fcn.006fb96e
int3