Function at 0x596e20
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
push esi
mov byte [ebp - 0xa0], dl
mov word [ebp - 0x9c], cx
movsx eax, word [ebp - 0x9c]
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0xa4], 0
je 0x596e62
cmp dword [ebp - 0xa4], 0x6e5
je 0x596f0b
jmp 0x596f21
movsx ecx, word [ebp + 0x10]
movsx edx, word [ebp - 0x9c]
sub ecx, edx
movsx eax, word [ebp + 8]
cmp ecx, eax
jge 0x596e83
mov byte [ebp - 0xa0], 0x8c
call fcn.00595ff0
movsx ecx, word [ebp - 0x9c]
movsx edx, word [ebp + 8]
add ecx, edx
movsx eax, word [ebp + 0x10]
cmp ecx, eax
je 0x596eac
lea ecx, [ebp - 0x8c]
push ecx
lea edx, [ebp - 0x6c]
push edx
call dword [sym.imp.ole32.dll_OleSetAutoConvert]
mov dword [ebp - 0x44], eax
movsx eax, word [ebp - 0x9c]
mov dword [ebp - 0xa8], eax
cmp dword [ebp - 0xa8], 0
je 0x596ec4
jmp 0x596f01
movsx ecx, word [ebp + 8]
movsx edx, word [ebp - 0x9c]
and ecx, edx
movsx eax, word [ebp + 0x10]
cmp ecx, eax
je 0x596eff
mov cx, word [ebp - 0x9c]
mov word [ebp + 0x10], cx
push 7
mov dl, 0xdd
mov cl, byte [ebp - 0xa0]
call fcn.004012d0
mov byte [ebp - 0xa0], 0xf5
call fcn.00595ff0
jmp 0x596f09
mov dx, word [ebp + 0x10]
mov word [ebp + 8], dx
jmp 0x596f21
lea eax, [ebp - 0x6c]
push eax
lea ecx, [ebp - 0x6c]
push ecx
call dword [sym.imp.ole32.dll_CoUnmarshalHresult]
mov dword [ebp - 0x28], eax
call fcn.00595ff0
movsx edx, word [ebp + 8]
mov dword [ebp - 0xac], edx
cmp dword [ebp - 0xac], 0x437
je 0x596f48
cmp dword [ebp - 0xac], 0x49f
je 0x596fb8
jmp 0x59701a
mov ax, word [ebp - 0x9c]
mov word [ebp + 0x10], ax
lea ecx, [ebp - 0x8c]
push ecx
mov edx, dword [ebp - 0x70]
push edx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x40], eax
movsx eax, word [ebp + 8]
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xb0], 0x191
je 0x596f9d
cmp dword [ebp - 0xb0], 0x516
je 0x596f8b
jmp 0x596fa6
mov dl, byte [ebp - 0xa0]
mov ecx, 0xe7
call fcn.00401af0
jmp 0x596fa6
mov ecx, 0xc8b
mov word [ebp + 0xc], cx
mov dx, word [ebp + 8]
mov word [ebp - 0x9c], dx
call fcn.00595ff0
jmp 0x59701a
mov byte [ebp - 0xa0], 0x40
movsx eax, word [ebp + 8]
mov dword [ebp - 0xb4], eax
cmp dword [ebp - 0xb4], 0x28f
je 0x596fd7
jmp 0x59700f
lea ecx, [ebp - 0x8c]
push ecx
mov edx, dword [ebp - 0x24]
push edx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x7c], eax
mov eax, 0x1a7
mov word [ebp + 0xc], ax
lea ecx, [ebp - 0x70]
push ecx
lea edx, [ebp - 0x6c]
push edx
call dword [sym.imp.ole32.dll_CoAllowSetForegroundWindow]
mov dword [ebp - 0x48], eax
mov ax, word [ebp + 8]
mov word [ebp + 0x10], ax
jmp 0x59701a
mov cx, word [ebp + 0x10]
mov word [ebp - 0x9c], cx
mov dx, word [ebp + 0xc]
mov word [ebp - 0x5c], dx
mov byte [ebp - 0x39], 0x23
mov ax, word [ebp - 0x5c]
mov word [ebp - 0xc], ax
mov cl, byte [ebp - 0xa0]
mov byte [ebp - 0x2d], cl
mov dword [ebp - 0x54], 0x3e6c
mov dword [ebp - 0x90], 0x93f
lea edx, [ebp - 0x90]
mov dword [ebp - 0x98], edx
mov al, byte [ebp - 0x2d]
mov byte [ebp - 0xb8], al
cmp byte [ebp - 0xb8], 0
je 0x597078
cmp byte [ebp - 0xb8], 0x3f
je 0x5970fb
jmp 0x59719b
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], ecx
lea edx, [ebp - 0x90]
mov dword [ebp - 0x20], edx
movsx eax, word [ebp + 0x10]
movsx ecx, word [ebp + 8]
or eax, ecx
movsx edx, word [ebp - 0x9c]
cmp eax, edx
je 0x5970e1
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x40]
push ecx
push str.Ld_Jboik6
lea edx, [ebp - 0x44]
push edx
call dword [sym.imp.ole32.dll_MkParseDisplayName]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax]
xor edx, dword [ecx]
mov eax, dword [ebp - 0x98]
mov dword [eax], edx
mov dl, byte [ebp - 0x39]
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
call fcn.00596770
mov dl, byte [ebp - 0x2d]
mov byte [ebp - 0xa0], dl
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x78], eax
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], ecx
lea edx, [ebp - 0x78]
mov dword [ebp - 8], edx
jmp 0x59719b
mov dl, byte [ebp - 0x39]
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call fcn.00596770
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x78]
shl edx, cl
mov eax, dword [ebp - 8]
mov dword [eax], edx
mov ecx, dword [ebp - 8]
mov eax, dword [ecx]
cdq
idiv dword [ebp - 0x90]
mov edx, dword [ebp - 0x98]
mov esi, dword [ebp - 0x78]
mov ecx, dword [edx]
sar esi, cl
cmp eax, esi
jg 0x597166
lea eax, [ebp - 0x70]
push eax
mov ecx, dword [ebp - 0x94]
push ecx
call dword [sym.imp.USERENV.dll_GetProfilesDirectoryA]
mov dword [ebp - 0x4c], eax
movzx edx, byte [ebp - 0xa0]
sub edx, 0x3d
mov byte [ebp - 0x2d], dl
movzx eax, word [ebp + 0xc]
movzx ecx, word [ebp - 0xc]
add eax, ecx
mov word [ebp - 0x5c], ax
mov edx, dword [ebp - 4]
mov eax, dword [edx]
and eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 4]
mov dword [ecx], eax
movsx edx, byte [ebp - 0x39]
sub edx, 0x60
mov byte [ebp - 0x39], dl
lea eax, [ebp - 0x50]
push eax
push 0x65
lea ecx, [ebp - 0x1c]
push ecx
call dword [sym.imp.ole32.dll_OleRegGetMiscStatus]
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x54]
add edx, dword [ebp - 0x50]
mov eax, dword [ebp - 4]
mov dword [eax], edx
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov dword [ebp - 0x34], edx
movzx eax, byte [ebp - 0x2d]
sub eax, 0x4b
movzx ecx, byte [ebp - 0xa0]
cmp eax, ecx
jne 0x5971ca
movzx edx, word [ebp - 0x5c]
movzx eax, word [ebp + 0xc]
xor edx, eax
mov word [ebp - 0xc], dx
call fcn.00595ff0
jmp 0x597207
mov ecx, dword [ebp - 0x98]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x20]
add edx, dword [eax]
mov ecx, dword [ebp - 8]
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x34]
shl eax, cl
cmp edx, eax
jl 0x597207
mov cl, byte [ebp - 0x2d]
mov byte [ebp - 0x71], cl
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax]
or edx, dword [ecx]
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x38], eax
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x58], ecx
mov eax, 0x22
pop esi
mov esp, ebp
pop ebp
ret 0xc