Function at 0x596770
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe4
push esi
mov byte [ebp - 0xc0], dl
mov dword [ebp - 0xbc], ecx
mov al, byte [ebp - 0xc0]
mov byte [ebp - 0x4e], al
mov ecx, 0x6d1
mov word [ebp - 0x80], cx
movsx edx, word [ebp - 0x80]
cmp edx, 0x639
jle 0x596d8c
movsx eax, byte [ebp - 0xc0]
and eax, 0x7b
movsx ecx, byte [ebp - 0x4e]
cmp eax, ecx
jne 0x5967dd
mov dword [ebp - 0x8c], 0x2f11
mov byte [ebp - 0x9d], 0x65
mov edx, 0x192
mov word [ebp - 0x2c], dx
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0x68], eax
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0xc4], ecx
cmp dword [ebp - 0xc4], 0xae
je 0x596800
cmp dword [ebp - 0xc4], 0x16c5
je 0x59684a
jmp 0x596870
mov dl, byte [ebp - 0xc0]
mov ecx, dword [ebp - 0x68]
call fcn.00596770
mov edx, dword [ebp - 0x8c]
shr edx, 8
mov dword [ebp - 0x8c], edx
lea eax, [ebp - 0x4e]
push eax
lea ecx, [ebp - 0x80]
push ecx
call dword [sym.imp.ole32.dll_CoQueryAuthenticationServices]
mov dword [ebp - 0x88], eax
movzx edx, word [ebp - 0x80]
push edx
movzx eax, word [ebp - 0x80]
push eax
movzx ecx, byte [ebp - 0x4e]
push ecx
call fcn.00596610
add esp, 0xc
jmp 0x596870
movzx edx, byte [ebp - 0x9d]
or edx, 0xa8
mov byte [ebp - 0x9d], dl
lea eax, [ebp - 0x8c]
push eax
call dword [sym.imp.ole32.dll_CoGetCallerTID]
mov dword [ebp - 0x88], eax
mov ecx, dword [ebp - 0x68]
shl ecx, 0xbe
cmp ecx, dword [ebp - 0xbc]
jg 0x5968b4
lea edx, [ebp - 0x4e]
mov dword [ebp - 0x54], edx
mov ax, word [ebp - 0x80]
mov word [ebp - 0x14], ax
mov cl, byte [ebp - 0x9d]
mov byte [ebp - 0x35], cl
mov dx, word [ebp - 0x2c]
mov word [ebp - 0x70], dx
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0xb8], eax
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0xa4], ecx
jmp 0x596908
movzx edx, word [ebp - 0x2c]
cmp edx, 0xc9c
jl 0x596908
mov eax, dword [ebp - 0xbc]
xor eax, dword [ebp - 0x68]
mov dword [ebp - 0xa4], eax
mov ecx, dword [ebp - 0xb8]
sub ecx, 0xa4a4
mov dword [ebp - 0x8c], ecx
movsx edx, byte [ebp - 0xc0]
movsx eax, byte [ebp - 0x4e]
add edx, eax
mov ecx, dword [ebp - 0x54]
mov byte [ecx], dl
movzx edx, byte [ebp - 0x4e]
push edx
mov eax, dword [ebp - 0x54]
mov dl, byte [eax]
mov cl, byte [ebp - 0x9d]
call fcn.004012d0
lea ecx, [ebp - 0x35]
mov dword [ebp - 0x74], ecx
movsx edx, word [ebp - 0x14]
mov dword [ebp - 0xc8], edx
cmp dword [ebp - 0xc8], 0x35f
je 0x596926
jmp 0x596948
movzx eax, word [ebp - 0x14]
push eax
movzx ecx, word [ebp - 0x70]
push ecx
movzx edx, word [ebp - 0x80]
push edx
mov dl, byte [ebp - 0x9d]
mov ecx, dword [ebp - 0x80]
call fcn.00596e20
jmp 0x596d11
movzx eax, word [ebp - 0x2c]
mov dword [ebp - 0xcc], eax
cmp dword [ebp - 0xcc], 0x192
je 0x596973
cmp dword [ebp - 0xcc], 0x9b6
je 0x596bb1
jmp 0x596c45
movzx ecx, word [ebp - 0x2c]
add ecx, 0x9d4
movzx edx, word [ebp - 0x70]
cmp ecx, edx
jle 0x5969ea
mov eax, dword [ebp - 0x74]
mov cl, byte [eax]
mov byte [ebp - 0xd], cl
mov edx, dword [ebp - 0xbc]
mov dword [ebp - 0xd0], edx
cmp dword [ebp - 0xd0], 0
je 0x5969b0
cmp dword [ebp - 0xd0], 0x57e
je 0x5969d9
jmp 0x5969ea
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0x4c], eax
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x90], ecx
lea edx, [ebp - 0x6c]
mov dword [ebp - 0x30], edx
mov eax, dword [ebp - 0xb8]
sub eax, dword [ebp - 0x4c]
mov dword [ebp - 0x8c], eax
jmp 0x5969ea
mov ecx, dword [ebp - 0x74]
movzx edx, byte [ecx]
movzx eax, byte [ebp - 0xd]
and edx, eax
mov ecx, dword [ebp - 0x74]
mov byte [ecx], dl
movzx edx, word [ebp - 0x70]
mov dword [ebp - 0xd4], edx
cmp dword [ebp - 0xd4], 0x5ee
je 0x596a02
jmp 0x596a3e
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
mov edx, dword [ebp - 0x90]
add ecx, dword [edx]
mov dword [ebp - 0xa4], ecx
movzx eax, byte [ebp - 0x4e]
push eax
movzx ecx, byte [ebp - 0x4e]
push ecx
mov edx, dword [ebp - 0x74]
movzx eax, byte [edx]
push eax
mov ecx, dword [ebp - 0x90]
mov edx, dword [ecx]
push edx
movzx eax, byte [ebp - 0x4e]
push eax
call fcn.004014d0
jmp 0x596b3e
lea ecx, [ebp - 0xb8]
mov dword [ebp - 0x7c], ecx
lea edx, [ebp - 0xbc]
mov dword [ebp - 0x94], edx
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 4], eax
mov cl, byte [ebp - 0x4e]
mov byte [ebp - 0x4d], cl
lea edx, [ebp - 0x80]
mov dword [ebp - 0x78], edx
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x94]
mov edx, dword [eax]
sub edx, dword [ecx]
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x6c]
mov ecx, dword [eax]
sar esi, cl
cmp edx, esi
jne 0x596b02
mov cx, word [ebp - 0x70]
mov word [ebp - 0xc], cx
movzx edx, byte [ebp - 0xd]
mov eax, dword [ebp - 0x74]
movzx ecx, byte [eax]
or edx, ecx
mov byte [ebp - 0x9d], dl
mov edx, dword [ebp - 0x54]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0x4d]
and eax, ecx
movsx edx, byte [ebp - 0x4e]
movsx ecx, byte [ebp - 0xc0]
add edx, ecx
cmp eax, edx
jg 0x596b00
mov edx, dword [ebp - 0x7c]
mov eax, dword [edx]
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x94]
mov edx, dword [ecx]
mov dword [ebp - 0x6c], edx
lea eax, [ebp - 0x35]
mov dword [ebp - 0x34], eax
mov cx, word [ebp - 0x70]
mov word [ebp - 0x20], cx
lea edx, [ebp - 0x4c]
mov dword [ebp - 0x84], edx
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax]
sub ecx, dword [ebp - 0xa4]
mov dword [ebp - 0x68], ecx
mov edx, dword [ebp - 0x68]
sub edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x30]
mov dword [eax], edx
jmp 0x596b3e
mov ecx, dword [ebp - 0x94]
mov edx, dword [ebp - 0x90]
mov eax, dword [ecx]
mov ecx, dword [edx]
shl eax, cl
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x68]
xor edx, dword [ecx]
cmp eax, edx
jle 0x596b3e
mov eax, dword [ebp - 0x78]
movzx ecx, word [eax]
push ecx
movzx edx, word [ebp - 0x2c]
push edx
mov eax, dword [ebp - 0x78]
movzx ecx, word [eax]
push ecx
mov dl, byte [ebp - 0x35]
mov ecx, dword [ebp - 0x14]
call fcn.00596e20
movzx edx, word [ebp - 0x2c]
sub edx, 0x7e1
mov word [ebp - 0x70], dx
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x48]
push ecx
call dword [sym.imp.ole32.dll_StringFromCLSID]
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x30]
mov eax, dword [edx]
mov dword [ebp - 0xd8], eax
cmp dword [ebp - 0xd8], 0x70c9
je 0x596b76
jmp 0x596b99
mov ecx, dword [ebp - 0x54]
movzx edx, byte [ecx]
push edx
movzx eax, byte [ebp - 0x4e]
push eax
movzx ecx, byte [ebp - 0xd]
push ecx
mov edx, dword [ebp - 0x30]
mov eax, dword [edx]
push eax
movzx ecx, byte [ebp - 0x4e]
push ecx
call fcn.004014d0
jmp 0x596bac
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp - 0xbc]
add eax, dword [edx]
mov ecx, dword [ebp - 0x30]
mov dword [ecx], eax
jmp 0x596c45
mov eax, dword [ebp - 0xb8]
xor edx, edx
mov ecx, 0xc05e
div ecx
cmp eax, dword [ebp - 0x8c]
je 0x596c35
mov edx, dword [ebp - 0x54]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0xc0]
and eax, ecx
mov byte [ebp - 0x4e], al
mov edx, dword [ebp - 0xa4]
mov dword [ebp - 0xbc], edx
mov eax, dword [ebp - 0x74]
movzx ecx, byte [eax]
movzx edx, byte [ebp - 0x35]
sub ecx, edx
mov eax, dword [ebp - 0x74]
mov byte [eax], cl
movsx ecx, word [ebp - 0x14]
mov dword [ebp - 0xdc], ecx
cmp dword [ebp - 0xdc], 0x2ba
je 0x596c0f
jmp 0x596c27
push 0x41
lea edx, [ebp - 0x80]
push edx
lea eax, [ebp - 0xb4]
push eax
call dword [sym.imp.ole32.dll_StringFromGUID2]
mov dword [ebp - 0x6c], eax
jmp 0x596c35
movzx ecx, word [ebp - 0x70]
add ecx, 0xe29
mov word [ebp - 0x2c], cx
mov ecx, dword [ebp - 0x74]
mov dl, byte [ecx]
mov ecx, dword [ebp - 0x8c]
call fcn.00401af0
mov edx, dword [ebp - 0x54]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0x4e]
add eax, ecx
mov edx, dword [ebp - 0x54]
mov byte [edx], al
mov eax, dword [ebp - 0xbc]
sub eax, dword [ebp - 0xa4]
cmp eax, dword [ebp - 0x68]
jge 0x596c6c
jmp 0x596cf6
movzx ecx, word [ebp - 0x2c]
add ecx, 0xc98
movzx edx, word [ebp - 0x70]
cmp ecx, edx
jl 0x596cf6
movsx eax, word [ebp - 0x80]
mov dword [ebp - 0xe0], eax
cmp dword [ebp - 0xe0], 0x5a7
je 0x596ca2
cmp dword [ebp - 0xe0], 0x6d2
je 0x596ce4
jmp 0x596cf6
mov ecx, dword [ebp - 0xa4]
mov dword [ebp - 0xbc], ecx
mov edx, dword [ebp - 0x54]
movsx eax, byte [edx]
movsx ecx, byte [ebp - 0x4e]
or eax, ecx
mov edx, dword [ebp - 0x54]
mov byte [edx], al
mov eax, dword [ebp - 0x74]
movzx edx, byte [eax]
movzx ecx, byte [ebp - 0x9d]
shl edx, cl
mov byte [ebp - 0x35], dl
push 1
push 1
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.ole32.dll_CoLockObjectExternal]
mov dword [ebp - 0x1c], eax
jmp 0x596cf6
movzx ecx, byte [ebp - 0x35]
movzx edx, byte [ebp - 0x9d]
xor ecx, edx
mov eax, dword [ebp - 0x74]
mov byte [eax], cl
lea ecx, [ebp - 0xb8]
push ecx
mov edx, dword [ebp - 8]
push edx
mov eax, dword [ebp - 0x98]
push eax
call dword [sym.imp.USERENV.dll_GetUserProfileDirectoryA]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x54]
mov dl, byte [ecx]
mov byte [ebp - 0xc0], dl
mov eax, dword [ebp - 0xbc]
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 0x5e47
je 0x596d42
cmp dword [ebp - 0xe4], 0x7863
je 0x596d7a
jmp 0x596d8c
lea ecx, [ebp - 0x9c]
push ecx
push 0x15
call dword [sym.imp.ole32.dll_CoGetMalloc]
mov dword [ebp - 0x28], eax
movzx edx, byte [ebp - 0x35]
movzx eax, byte [ebp - 0x9d]
and edx, eax
mov ecx, dword [ebp - 0x74]
mov byte [ecx], dl
movzx edx, byte [ebp - 0x4e]
push edx
mov dl, byte [ebp - 0x4e]
mov eax, dword [ebp - 0x74]
mov cl, byte [eax]
call fcn.004012d0
jmp 0x596d8c
mov ecx, dword [ebp - 0x8c]
sub ecx, 0x1d00
mov dword [ebp - 0xb8], ecx
mov dl, byte [ebp - 0x4e]
mov ecx, dword [ebp - 0xbc]
call fcn.00596770
movsx edx, byte [ebp - 0xc0]
sub edx, 0x11
mov byte [ebp - 0x4e], dl
lea eax, [ebp - 0x80]
push eax
lea ecx, [ebp - 0x80]
push ecx
lea edx, [ebp - 0x4e]
push edx
call dword [sym.imp.ole32.dll_MonikerCommonPrefixWith]
mov dword [ebp - 0x9c], eax
mov dl, byte [ebp - 0xc0]
mov ecx, dword [ebp - 0xbc]
call fcn.00596770
mov al, byte [ebp - 0x4e]
mov byte [ebp - 0xc0], al
lea ecx, [ebp - 0x4e]
push ecx
lea edx, [ebp - 0x64]
push edx
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x28]
push ecx
call dword [sym.imp.ole32.dll_CoGetObject]
mov dword [ebp - 0x28], eax
mov dl, byte [ebp - 0x4e]
mov ecx, dword [ebp - 0xbc]
call fcn.00596770
movsx edx, byte [ebp - 0xc0]
add edx, 0xf
mov byte [ebp - 0x4e], dl
mov eax, 0x19
pop esi
mov esp, ebp
pop ebp
ret