Function at 0x461bc0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
movzx eax, word [ebp + 0x14]
push ebx
push esi
mov esi, ecx
mov cl, al
and cl, 4
mov byte [ebp - 2], cl
mov cl, byte [0x496b86]
mov byte [ebp - 1], cl
xor ecx, ecx
mov dl, byte [esi + 0xe]
mov ebx, dword [ebp + 0x14]
mov cl, al
and dl, 0x7f
shr ebx, 0x10
push edi
mov dword [ebp - 0x14], esi
mov dword [ebp + 0x14], eax
and ecx, 0x10
mov dword [ebp - 0x30], ecx
xor ecx, ecx
mov cl, al
and ecx, 0x40
mov dword [ebp - 0x2c], ecx
mov ecx, eax
shr ecx, 1
shl cl, 7
or cl, dl
mov byte [esi + 0xe], cl
mov cl, al
and cl, 1
test al, al
mov byte [ebp - 3], cl
js 0x461c35
cmp byte [0x496e68], 0
je 0x461c35
push esi
mov byte [0x496e68], 0
call fcn.0040c706
pop ecx
mov ecx, dword [ebp + 8]
xor edi, edi
cmp dword [ebp + 0xc], edi
jne 0x461c42
mov dword [ebp + 0xc], ecx
cmp dword [ebp + 0x18], edi
jne 0x461c4a
mov dword [ebp + 0x18], ecx
mov eax, dword [esi + 0x2c]
xor edx, edx
cmp eax, edi
setne dl
push ecx
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x18], edx
call fcn.00451a05
xor eax, eax
cmp dword [ebp + 0x10], edi
mov dword [ebp - 0x1c], edi
setne al
cmp eax, edi
mov dword [ebp - 0x24], eax
je 0x461c93
push 0x20a
lea ecx, [ebp - 0x1c]
call fcn.0042c850
push dword [ebp - 0x1c]
push 0x208
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp dword [ebp - 0x18], edi
mov dword [ebp - 0xc], edi
je 0x461cdd
cmp byte [ebp - 2], 0
jne 0x461cdd
push 1
call fcn.0045d6e0
mov dword [esp], 0x8d4
call fcn.0046cbd8
cmp eax, edi
pop ecx
mov dword [ebp + 8], eax
je 0x461cda
push edi
push edi
push edi
push edi
push edi
push 0x271c
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov ecx, dword [ebp + 8]
push eax
call fcn.004386cc
mov dword [ebp - 0xc], eax
jmp 0x461cdd
mov dword [ebp - 0xc], edi
mov eax, dword [ebp - 0xc]
cmp eax, edi
mov dword [ebp - 0x28], eax
mov edi, eax
jne 0x461cec
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
je 0x461cf6
mov dword [ecx + 0x2c], edi
xor eax, eax
test ecx, ecx
jne 0x461d1d
push 0x94
call fcn.0046cbd8
test eax, eax
pop ecx
je 0x461d16
push edi
push esi
mov ecx, eax
call fcn.0041cc20
jmp 0x461d18
xor eax, eax
mov dword [ebp + 0x1c], eax
mov ecx, eax
test ecx, ecx
mov dword [ebp - 0x44], eax
je 0x461d26
mov esi, ecx
mov eax, dword [esi + 0x2c]
mov word [esi + 8], bx
mov ebx, 0x4975e4
push ebx
mov dword [ebp - 0x40], eax
mov dword [esi + 0x2c], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 0x44]
mov dword [ebp - 0x3c], eax
mov al, byte [esi + 0xb]
mov byte [ebp - 4], al
mov eax, dword [esi + 4]
mov dword [ebp - 0x34], eax
mov al, byte [esi + 0x8a]
push ebx
mov byte [ebp - 5], al
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea eax, [ebp - 0x20]
mov dword [esi + 0x40], eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax]
push 1
push dword [ebp + 0xc]
mov ecx, esi
mov dword [ebp + 8], eax
mov dword [esi + 0x44], eax
call fcn.00439a97
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [esi + 0x4c], eax
xor eax, eax
cmp dword [ebp - 0x18], eax
je 0x461da0
mov ecx, dword [ebp + 0x18]
mov dword [edi + 0x154], ecx
test byte [ebp + 0x14], 0x10
mov dword [esi + 0x1c], eax
je 0x461dad
or byte [esi + 0xb], 1
test byte [ebp + 0x14], 0x20
je 0x461dba
or byte [esi + 0x8a], 1
cmp dword [ebp - 0x24], eax
je 0x461dce
movzx eax, word [ebp - 0x2c]
push eax
push dword [ebp + 0x10]
mov ecx, esi
call fcn.004133f5
xor eax, eax
cmp dword [ebp + 0x10], eax
jne 0x461ddc
mov dword [ebp + 0x10], 0x480934
cmp dword [ebp - 0x18], eax
je 0x461e26
cmp dword [ebp - 0xc], eax
je 0x461e26
mov eax, dword [edi + 0xf0]
mov dword [edi + 0x14c], esi
mov dword [eax], esi
push edi
mov byte [edi + 0x6a], 1
mov byte [edi + 0x69], 0xff
call fcn.0042a3da
cmp byte [ebp - 1], 0
pop ecx
jne 0x461e26
cmp dword [ebp - 0x10], 0
je 0x461e26
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x10]
inc dword [eax + 0xd0]
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x14]
mov al, byte [eax + 0xd]
test al, al
je 0x461e33
mov byte [esi + 0xd], al
cmp word [ebp - 0x30], 0
mov al, byte [ebp - 3]
mov byte [esi + 0xc], al
jne 0x461e8e
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 0x14]
push 0xffffffffffffffff
push 0
push str.__MAIN__
call fcn.0040f2f5
test eax, eax
jne 0x461e63
mov eax, 0x4846c0
jmp 0x461e7a
push dword [eax]
push 0x4875a4
call fcn.00428293
test al, al
pop ecx
pop ecx
jne 0x461e87
mov eax, 0x482178
push eax
push 0x488cb0
mov ecx, esi
call fcn.0042b2cd
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [0x496de4], 0
je 0x461ed6
mov eax, dword [ebp + 0x10]
cmp word [eax], 0
je 0x461ed6
test byte [esi + 0xe], 8
jne 0x461ed6
push str.ENTER:
lea ecx, [ebp + 0x14]
call fcn.004365ba
push dword [ebp + 0x10]
lea ecx, [ebp + 0x14]
call fcn.0042c877
push 0
push 0x11
push 0
push dword [ebp + 0x14]
mov ecx, esi
call fcn.00415577
lea ecx, [ebp + 0x14]
call fcn.00427365
mov eax, dword [ebp - 0x14]
mov byte [esi + 0x88], 1
test byte [eax + 0xe], 0x80
je 0x461eea
and byte [esi + 0xe], 0xfe
xor eax, eax
cmp dword [ebp - 0x18], eax
je 0x461f8b
cmp dword [ebp - 0xc], eax
je 0x461f8b
cmp byte [ebp - 1], al
mov ecx, edi
je 0x461f80
mov edx, dword [edi]
push eax
push 0x271d
mov byte [edi + 0x69], 0x81
mov byte [edi + 0x68], 0x10
call dword [edx + 8]
mov eax, dword [edi + 0x18]
push str.0x_I64X
cdq
push str.__WinID
push edx
push eax
push esi
call fcn.00438e64
and dword [edi + 0x154], 0
add esp, 0x14
push dword [ebp + 0x18]
mov ecx, esi
call fcn.0045c839
xor eax, eax
cmp dword [edi + 0xd0], eax
jg 0x461f60
mov ecx, dword [edi + 0xbc]
cmp dword [ecx], eax
jg 0x461f60
mov ecx, dword [edi + 0xcc]
cmp dword [ecx], eax
jle 0x461fb7
push eax
push eax
push 0x10
push dword [edi + 0x18]
mov byte [edi + 0x69], 0xff
call dword [sym.imp.USER32.dll_PostMessageW]
push 0x20
mov ecx, edi
call fcn.00435f5e
mov byte [edi + 0x69], 0x81
jmp 0x461fb7
mov byte [edi + 0x68], 0
call fcn.00436095
jmp 0x461fb7
push dword [ebp + 8]
mov ecx, esi
call fcn.0045c839
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x461fb7
cmp byte [ebp - 2], 0
jne 0x461fb7
push 0
push 0
push 0x10
push dword [eax + 0x18]
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, dword [esi + 0x2c]
mov dword [ebp - 0x28], eax
mov edi, dword [ebp + 0x10]
cmp word [edi], 0
je 0x461ff4
test byte [esi + 0xe], 8
jne 0x461ff4
push str.LEAVE:
lea ecx, [ebp + 0x10]
call fcn.004365ba
push edi
lea ecx, [ebp + 0x10]
call fcn.0042c877
push 0
push 0x11
push 0
push dword [ebp + 0x10]
mov ecx, esi
call fcn.00415577
lea ecx, [ebp + 0x10]
call fcn.00427365
cmp dword [ebp + 0x1c], 0
mov eax, dword [esi + 0x84]
mov dword [ebp + 0x10], eax
je 0x46200f
push dword [ebp - 0x34]
mov ecx, esi
call fcn.0041c72f
jmp 0x462038
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x40], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x44], eax
mov al, byte [ebp - 4]
mov byte [esi + 0xb], al
mov al, byte [ebp - 5]
push ebx
mov byte [esi + 0x8a], al
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [esi + 0x2c], 0
je 0x462044
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x2c], eax
lea ecx, [ebp - 0x44]
call fcn.004366a8
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x46205a
mov eax, dword [ecx]
push 1
call dword [eax + 0xc]
mov edi, dword [ebp - 0x10]
xor esi, esi
cmp byte [ebp - 1], 0
jne 0x462093
cmp edi, esi
je 0x462093
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec dword [edi + 0xd0]
cmp byte [edi + 0x69], 0x81
je 0x46208c
push esi
push esi
push 0x43d
push dword [edi + 0x18]
call dword [sym.imp.USER32.dll_PostMessageW]
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.0042a9b9
cmp dword [ebp - 0x24], esi
je 0x462131
cmp word [ebp - 0x2c], si
jne 0x462131
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0xffffffffffffffff
push esi
mov esi, dword [ebp - 0x14]
push 0x4833c0
mov ecx, esi
call fcn.0040f2f5
test eax, eax
je 0x4620d6
push dword [eax]
push 0x488c90
call fcn.0040a3cf
pop ecx
pop ecx
push 0xffffffffffffffff
push 0
push str.CurDrv
mov ecx, esi
call fcn.0040f2f5
test eax, eax
je 0x4620f8
push dword [eax]
push 0x488c70
call fcn.0040a3cf
pop ecx
pop ecx
push 0xffffffffffffffff
push 0
push str.CurFile
mov ecx, esi
call fcn.0040f2f5
test eax, eax
je 0x46211a
push dword [eax]
push 0x488c4c
call fcn.0040a3cf
pop ecx
pop ecx
push dword [ebp - 0x1c]
call fcn.0040a41e
pop ecx
call fcn.0040f134
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x462134
mov esi, dword [ebp - 0x14]
cmp dword [esi + 0x2c], 0
je 0x46213d
mov dword [esi + 0x2c], edi
cmp byte [ebp - 1], 0
jne 0x46214c
push 0
mov ecx, esi
call fcn.0044ba23
lea ecx, [ebp - 0x1c]
call fcn.00427365
lea ecx, [ebp - 0x20]
call fcn.00416de7
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
leave
ret 0x18