Function at 0x595ff0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
mov eax, 0x279
mov word [ebp - 0x5c], ax
movsx ecx, word [ebp - 0x5c]
mov dword [ebp - 0xb4], ecx
cmp dword [ebp - 0xb4], 0x357
je 0x59601a
jmp 0x59606d
movsx edx, word [ebp - 0x5c]
add edx, 0x421
mov word [ebp - 0x5c], dx
lea eax, [ebp - 0x88]
push eax
mov ecx, dword [ebp - 0x38]
push ecx
mov edx, dword [ebp - 0xa4]
push edx
call dword [sym.imp.USERENV.dll_GetUserProfileDirectoryA]
mov dword [ebp - 0x88], eax
movzx eax, word [ebp - 0x5c]
push eax
movzx ecx, word [ebp - 0x5c]
push ecx
push 0xfffffffffffffffd
call fcn.00596610
add esp, 0xc
movsx edx, word [ebp - 0x5c]
sub edx, 0x583
mov word [ebp - 0x5c], dx
jmp 0x596130
mov dword [ebp - 0x6c], 0x71e6
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x90], eax
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0xa0], ecx
mov byte [ebp - 0x31], 0x5d
mov dl, byte [ebp - 0x31]
mov byte [ebp - 0xb8], dl
cmp byte [ebp - 0xb8], 0x50
je 0x596115
cmp byte [ebp - 0xb8], 0x5e
je 0x5960aa
jmp 0x596130
push 0xb
mov eax, dword [ebp - 0x84]
push eax
push 2
push 0x83
lea ecx, [ebp - 0x31]
push ecx
push 0x75
push 0xdf
lea edx, [ebp - 0x88]
push edx
call dword [sym.imp.ole32.dll_CoSetProxyBlanket]
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x90]
movzx ecx, word [eax]
push ecx
mov edx, dword [ebp - 0x90]
movzx eax, word [edx]
push eax
movzx ecx, byte [ebp - 0x31]
push ecx
call fcn.00596610
add esp, 0xc
movsx edx, word [ebp - 0x5c]
and edx, 0x10f
mov eax, dword [ebp - 0x90]
mov word [eax], dx
movsx ecx, byte [ebp - 0x31]
xor ecx, 0x75
mov byte [ebp - 0x31], cl
jmp 0x596130
movzx edx, byte [ebp - 0x31]
push edx
mov dl, byte [ebp - 0x31]
mov cl, 0x18
call fcn.004012d0
mov eax, dword [ebp - 0x6c]
shl eax, 8
mov dword [ebp - 0xa0], eax
mov ecx, 0x783
mov word [ebp - 0x68], cx
mov edx, dword [ebp - 0x90]
movsx eax, word [edx]
cdq
mov ecx, 0x685
idiv ecx
movsx edx, word [ebp - 0x5c]
cmp eax, edx
jne 0x59616f
movzx eax, byte [ebp - 0x31]
push eax
movzx ecx, byte [ebp - 0x31]
push ecx
push 0xb9
mov edx, dword [ebp - 0x6c]
push edx
movzx eax, byte [ebp - 0x31]
push eax
call fcn.004014d0
mov ecx, dword [ebp - 0xa0]
sar ecx, 2
cmp ecx, dword [ebp - 0x6c]
jne 0x59620e
movsx edx, byte [ebp - 0x31]
or edx, 0x66
mov byte [ebp - 0x31], dl
lea eax, [ebp - 0x5c]
push eax
mov ecx, dword [ebp - 0x58]
push ecx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x18], eax
movsx edx, word [ebp - 0x5c]
sub edx, 0x510
mov eax, dword [ebp - 0x90]
movsx ecx, word [eax]
cmp edx, ecx
jle 0x5961ed
mov edx, dword [ebp - 0x90]
movsx eax, word [edx]
movsx ecx, word [ebp - 0x5c]
add eax, ecx
mov edx, dword [ebp - 0x90]
mov word [edx], ax
movzx eax, byte [ebp - 0x31]
push eax
movzx ecx, byte [ebp - 0x31]
push ecx
push 0xf3
mov edx, dword [ebp - 0xa0]
push edx
movzx eax, byte [ebp - 0x31]
push eax
call fcn.004014d0
jmp 0x59620e
movsx ecx, byte [ebp - 0x31]
cmp ecx, 0x7c
jg 0x59620e
mov edx, dword [ebp - 0x90]
movsx eax, word [edx]
movsx ecx, word [ebp - 0x5c]
and eax, ecx
mov edx, dword [ebp - 0x90]
mov word [edx], ax
mov dword [ebp - 0x70], 0x299e
lea eax, [ebp - 0x70]
mov dword [ebp - 0xa8], eax
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0xb0], ecx
mov edx, dword [ebp - 0x70]
mov dword [ebp - 0x74], edx
lea eax, [ebp - 0x6c]
mov dword [ebp - 0x14], eax
mov cx, word [ebp - 0x68]
mov word [ebp - 0x9c], cx
movzx edx, word [ebp - 0x68]
sub edx, 0xcd5
movzx eax, word [ebp - 0x9c]
cmp edx, eax
jle 0x5962a6
movzx ecx, word [ebp - 0x68]
add ecx, 0xbe4
mov word [ebp - 0x9c], cx
lea edx, [ebp - 0x6c]
push edx
mov eax, dword [ebp - 0x78]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call dword [sym.imp.USERENV.dll_GetUserProfileDirectoryA]
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0xa8]
mov eax, dword [edx]
sub eax, dword [ebp - 0x74]
mov ecx, dword [ebp - 0xa8]
mov dword [ecx], eax
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
or eax, dword [ebp - 0x6c]
mov dword [ebp - 0xb0], eax
movsx ecx, byte [ebp - 0x31]
sar ecx, 5
mov byte [ebp - 0x31], cl
jmp 0x596307
mov edx, dword [ebp - 0xa8]
mov eax, dword [ebp - 0x70]
add eax, dword [edx]
cmp eax, dword [ebp - 0x74]
jne 0x596307
call dword [sym.imp.ole32.dll_CoResumeClassObjects]
mov dword [ebp - 0xac], eax
movsx ecx, word [ebp - 0x5c]
shl ecx, 4
mov edx, dword [ebp - 0x90]
mov word [edx], cx
mov eax, dword [ebp - 0x90]
movzx ecx, word [eax]
push ecx
movzx edx, word [ebp - 0x68]
push edx
movzx eax, word [ebp - 0x5c]
push eax
mov dl, 0x86
mov ecx, dword [ebp - 0x90]
mov cx, word [ecx]
call fcn.00596e20
movzx edx, word [ebp - 0x68]
xor edx, 0xaa9
mov word [ebp - 0x9c], dx
mov byte [ebp - 0x19], 0xb9
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x54], eax
movzx ecx, byte [ebp - 0x19]
cmp ecx, 0x26
jge 0x5963a4
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
and eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x14]
mov dword [ecx], eax
mov edx, dword [ebp - 0x6c]
imul edx, dword [ebp - 0xa0]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xb0]
sub ecx, dword [eax]
cmp edx, ecx
jge 0x596378
lea edx, [ebp - 0x5c]
push edx
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [ebp - 0x94]
push ecx
call dword [sym.imp.USERENV.dll_GetUserProfileDirectoryA]
mov dword [ebp - 8], eax
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
add eax, dword [ebp - 0xa0]
mov dword [ebp - 0x6c], eax
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ecx]
sub edx, dword [ebp - 0x70]
mov dword [ebp - 0x74], edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
add ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x14]
mov dword [edx], ecx
movzx eax, byte [ebp - 0x31]
push eax
movzx ecx, byte [ebp - 0x31]
push ecx
movzx edx, byte [ebp - 0x19]
push edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
push ecx
movzx edx, byte [ebp - 0x31]
push edx
call fcn.004014d0
mov al, byte [ebp - 0x19]
mov byte [ebp - 0x4d], al
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x80], ecx
mov edx, dword [ebp - 0x90]
movsx eax, word [edx]
mov dword [ebp - 0xbc], eax
cmp dword [ebp - 0xbc], 0x505
je 0x5963cd
jmp 0x59640b
movzx ecx, word [ebp - 0x68]
mov edx, dword [ebp - 0x80]
movzx eax, word [edx]
sub ecx, eax
mov word [ebp - 0x9c], cx
movzx ecx, word [ebp - 0x9c]
movzx edx, word [ebp - 0x68]
or ecx, edx
mov eax, dword [ebp - 0x80]
mov word [eax], cx
mov ecx, dword [ebp - 0x90]
movsx edx, word [ecx]
xor edx, 0x6bd
mov word [ebp - 0x5c], dx
jmp 0x596575
movzx eax, byte [ebp - 0x19]
shl eax, 0x8b
movzx ecx, byte [ebp - 0x4d]
cmp eax, ecx
jl 0x5964a1
mov edx, dword [ebp - 0xa8]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x74]
shr eax, cl
mov ecx, dword [ebp - 0x70]
and ecx, dword [ebp - 0x54]
cmp eax, ecx
jae 0x5964a1
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0xc0], edx
cmp dword [ebp - 0xc0], 0x299e
je 0x596458
cmp dword [ebp - 0xc0], 0x7a16
je 0x596486
jmp 0x5964a1
lea eax, [ebp - 0x31]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ecx]
imul edx, dword [ebp - 0x70]
mov dword [ebp - 0x74], edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov dword [ebp - 0x60], ecx
lea edx, [ebp - 0x9c]
mov dword [ebp - 0x7c], edx
lea eax, [ebp - 0x4d]
mov dword [ebp - 0xc], eax
jmp 0x5964a1
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 0x4c]
push edx
lea eax, [ebp - 0x19]
push eax
push 0x27
lea ecx, [ebp - 0x2c]
push ecx
call dword [sym.imp.ole32.dll_CoGetClassObject]
mov dword [ebp - 0x64], eax
lea edx, [ebp - 0x54]
mov dword [ebp - 0x30], edx
movsx eax, byte [ebp - 0x31]
add eax, 0x77
mov ecx, dword [ebp - 4]
movsx edx, byte [ecx]
cmp eax, edx
jge 0x596575
mov eax, dword [ebp - 0xc]
mov cl, byte [eax]
mov byte [ebp - 0xc4], cl
cmp byte [ebp - 0xc4], 0x20
je 0x596561
cmp byte [ebp - 0xc4], 0x4d
je 0x5964e2
jmp 0x596575
mov edx, dword [ebp - 0x90]
movsx eax, word [edx]
sub eax, 0x36c
movsx ecx, word [ebp - 0x5c]
cmp eax, ecx
jge 0x596523
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
and eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x14]
mov dword [ecx], eax
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
sub eax, dword [ebp - 0xa0]
mov dword [ebp - 0x60], eax
mov ecx, dword [ebp - 0xa8]
mov edx, dword [ebp - 0x70]
add edx, dword [ecx]
mov dword [ebp - 0x74], edx
jmp 0x59655f
mov eax, dword [ebp - 0x90]
movzx ecx, word [eax]
push ecx
mov edx, dword [ebp - 0x80]
movzx eax, word [edx]
push eax
movzx ecx, word [ebp - 0x5c]
push ecx
mov edx, dword [ebp - 0xc]
mov dl, byte [edx]
mov eax, dword [ebp - 0x90]
mov cx, word [eax]
call fcn.00596e20
movzx ecx, word [ebp - 0x9c]
movzx edx, word [ebp - 0x68]
sub ecx, edx
mov eax, dword [ebp - 0x80]
mov word [eax], cx
jmp 0x596575
lea ecx, [ebp - 0x2c]
push ecx
mov edx, dword [ebp - 0x8c]
push edx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xb0]
and ecx, dword [eax]
mov dword [ebp - 0xa0], ecx
lea edx, [ebp - 0x5c]
push edx
call dword [sym.imp.ole32.dll_CoEnableCallCancellation]
mov dword [ebp - 0x98], eax
mov al, byte [ebp - 0x31]
mov byte [ebp - 0xc8], al
cmp byte [ebp - 0xc8], 0x3d
je 0x5965aa
jmp 0x5965f3
mov ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x74]
mov edx, dword [ebp - 0xa8]
mov dword [edx], ecx
mov eax, dword [ebp - 0x6c]
add eax, dword [ebp - 0xa0]
mov dword [ebp - 0xb0], eax
movzx ecx, word [ebp - 0x5c]
push ecx
mov edx, dword [ebp - 0x90]
movzx eax, word [edx]
push eax
movzx ecx, byte [ebp - 0x31]
push ecx
call fcn.00596610
add esp, 0xc
mov edx, dword [ebp - 0xa0]
add edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x14]
mov dword [eax], edx
jmp 0x596604
lea ecx, [ebp - 0x54]
push ecx
mov edx, dword [ebp - 0x38]
push edx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x18], eax
mov eax, 0xd1
mov esp, ebp
pop ebp
ret