Function at 0x45a810
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x1c8
mov eax, dword [0x52efc0]
lea ebx, [esp + 0xbc]
xor eax, ebp
mov dword [esp + 0x1c0], eax
push 0x104
push 0
push ebx
call fcn.004b81d0
add esp, 0xc
push 1
push 0x1a
push ebx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x45a921
push 0x20
call fcn.004aea96
add esp, 4
mov esi, eax
mov dword [eax], 0x666e6f63
mov dword [eax + 4], 0x735c6769
mov dword [eax + 8], 0x65747379
mov dword [eax + 0xc], 0x6f72706d
mov dword [eax + 0x10], 0x656c6966
mov byte [eax + 0x14], 0
push 0x20
call fcn.004aea96
add esp, 4
mov dword [eax], 0x61636f6c
mov dword [eax + 4], 0x7265736c
mov dword [eax + 8], 0x65636976
mov dword [eax + 0xc], 0x7070615c
mov dword [eax + 0x10], 0x6163696c
mov dword [eax + 0x14], 0x6e6f6974
mov dword [eax + 0x18], 0x74616420
mov dword [esp + 0xc], eax
mov word [eax + 0x1c], 0x61
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb8], 0
push ebx
call fcn.004ceea0
add esp, 4
cmp eax, 0xfffffff0
jae 0x45ab44
mov ecx, eax
cmp eax, 0xb
jae 0x45a928
lea edi, [esp + 0xb0]
test ecx, ecx
mov byte [esp + 0xbb], cl
mov dword [esp + 8], edi
jne 0x45a96c
jmp 0x45a97b
xor ebx, ebx
jmp 0x45aaad
mov ebx, ecx
add ebx, 0x10
and ebx, 0xfffffff0
push ebx
mov edi, ecx
call fcn.004aea96
mov ecx, edi
add esp, 4
mov edi, eax
mov dword [esp + 0xb0], eax
or ebx, 0x80000000
lea eax, [esp + 0xb0]
mov dword [esp + 0xb8], ebx
lea ebx, [esp + 0xbc]
mov dword [esp + 0xb4], ecx
mov dword [esp + 8], eax
push ecx
push ebx
push edi
mov ebx, ecx
call fcn.004b76d0
mov ecx, ebx
add esp, 0xc
mov eax, dword [esp + 8]
mov byte [edi + ecx], 0
movzx ebx, byte [eax + 0xb]
test bl, bl
jns 0x45a9a4
mov eax, dword [esp + 0xb0]
mov ebx, dword [esp + 0xb4]
cmp ebx, 0x14
jl 0x45aa7d
jmp 0x45a9b4
lea eax, [esp + 0xb0]
cmp ebx, 0x14
jl 0x45aa7d
lea edi, [eax + ebx]
mov ecx, ebx
mov dword [esp + 4], eax
nop dword [eax]
add ecx, 0xffffffed
je 0x45aa1c
push ecx
push 0x63
push eax
call fcn.004b6710
add esp, 0xc
test eax, eax
je 0x45aa1c
movdqu xmm0, xmmword [eax]
movdqu xmm1, xmmword [esi]
movd xmm3, dword [eax + 0x10]
movd xmm2, dword [esi + 0x10]
pcmpeqb xmm1, xmm0
pcmpeqb xmm2, xmm3
pand xmm2, xmm1
pmovmskb ecx, xmm2
cmp ecx, 0xffff
je 0x45aa0b
inc eax
mov ecx, edi
sub ecx, eax
cmp ecx, 0x14
jge 0x45a9c0
jmp 0x45aa1c
cmp eax, edi
je 0x45aa1c
sub eax, dword [esp + 4]
cmp eax, 0xffffffff
jne 0x45aad4
cmp ebx, 0x1d
jl 0x45aa7d
mov eax, dword [esp + 4]
nop word cs:[eax + eax]
nop
add ebx, 0xffffffe4
je 0x45aa7d
push ebx
push 0x6c
push eax
call fcn.004b6710
add esp, 0xc
test eax, eax
je 0x45aa7d
mov ecx, dword [esp + 0xc]
movdqu xmm0, xmmword [eax]
movdqu xmm1, xmmword [eax + 0xd]
movdqu xmm2, xmmword [ecx]
movdqu xmm3, xmmword [ecx + 0xd]
pcmpeqb xmm2, xmm0
pcmpeqb xmm3, xmm1
pand xmm3, xmm2
pmovmskb ecx, xmm3
cmp ecx, 0xffff
je 0x45aac5
inc eax
mov ebx, edi
sub ebx, eax
cmp ebx, 0x1d
jge 0x45aa30
xor ebx, ebx
mov eax, dword [esp + 8]
cmp byte [eax + 0xb], 0
jns 0x45aa98
push dword [esp + 0xb0]
call fcn.004aeac6
add esp, 4
push dword [esp + 0xc]
call fcn.004aeac6
add esp, 4
push esi
call fcn.004aeac6
add esp, 4
mov ecx, dword [esp + 0x1c0]
xor ecx, ebp
call fcn.004aeb01
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
cmp eax, edi
je 0x45aa7f
sub eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x45aa7f
push 0x1f
push str...._.._base_360_qihoo_util.cc
call fcn.00435a20
add esp, 8
mov bl, 1
test eax, eax
jle 0x45aa7f
lea ecx, [esp + 0x10]
push 0xffffffffffffffff
push 0x189
push str...._.._base_360_qihoo_util.cc
call fcn.00435a80
lea eax, [esp + 0x14]
push 0x36
push str.IsSystemPrivilegeImp__SHGetSpecialFolderPathA_szPath_
push eax
call fcn.0040372d
add esp, 0xc
mov edi, eax
lea eax, [esp + 0xbc]
push eax
call fcn.004ceea0
add esp, 4
push eax
lea eax, [esp + 0xc0]
push eax
push edi
call fcn.0040372d
add esp, 0xc
lea ecx, [esp + 0x10]
call fcn.00435e20
jmp 0x45aa7f
lea ecx, [esp + 0xb0]
call fcn.0042752c