Function at 0x46bb79
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 [0x4a5b86]
mov byte [ebp - 1], cl
xor ecx, ecx
mov dl, byte [esi + 0xe]
mov ebx, dword [ebp + 0x14]
mov cl, al
and dl, 0x7f
push edi
shr ebx, 0x10
xor edi, edi
mov dword [ebp - 0xc], 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 0x46bbf0
cmp byte [0x4a5ebd], 0
je 0x46bbf0
push esi
mov byte [0x4a5ebd], 0
call fcn.0040de2f
pop ecx
cmp dword [ebp + 0xc], edi
mov ecx, dword [ebp + 8]
jne 0x46bbfb
mov dword [ebp + 0xc], ecx
cmp dword [ebp + 0x18], edi
jne 0x46bc03
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 - 0x14], edx
call fcn.0045c586
xor eax, eax
cmp dword [ebp + 0x10], edi
mov dword [ebp - 0x1c], edi
setne al
cmp eax, edi
mov dword [ebp - 0x24], eax
je 0x46bc4c
push 0x20a
lea ecx, [ebp - 0x1c]
call fcn.00432cfe
push dword [ebp - 0x1c]
push 0x208
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
xor eax, eax
cmp dword [ebp - 0x14], edi
mov dword [ebp - 0x18], eax
je 0x46bc96
cmp byte [ebp - 2], al
jne 0x46bc96
push 1
call fcn.0046f4aa
mov dword [esp], 0x8d4
call fcn.00479ff8
cmp eax, edi
pop ecx
mov dword [ebp + 8], eax
je 0x46bc91
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.0043edc9
jmp 0x46bc93
xor eax, eax
mov dword [ebp - 0x18], eax
cmp eax, edi
mov dword [ebp - 0x28], eax
mov edi, eax
jne 0x46bca2
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
je 0x46bcac
mov dword [ecx + 0x2c], edi
xor eax, eax
test ecx, ecx
jne 0x46bcd3
push 0xa0
call fcn.00479ff8
test eax, eax
pop ecx
je 0x46bccc
push edi
push esi
mov ecx, eax
call fcn.0041f54a
jmp 0x46bcce
xor eax, eax
mov ecx, eax
mov dword [ebp + 0x1c], ecx
test ecx, ecx
mov dword [ebp - 0x44], eax
je 0x46bcdc
mov esi, ecx
mov eax, dword [esi + 0x2c]
mov word [esi + 8], bx
mov ebx, 0x4a6658
push ebx
mov dword [ebp - 0x40], eax
mov dword [esi + 0x2c], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi + 0x48]
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 0x4c]
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 + 0x96]
push ebx
mov byte [ebp - 5], al
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea eax, [ebp - 0x20]
mov dword [esi + 0x48], 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 + 0x4c], eax
call fcn.004401d6
xor eax, eax
mov ax, word [esi + 8]
push eax
push dword [ebp + 8]
call fcn.0040deff
cmp dword [ebp - 0x14], 0
pop ecx
pop ecx
mov dword [esi + 0x54], eax
je 0x46bd5d
mov eax, dword [ebp + 0x18]
mov dword [edi + 0x154], eax
and dword [esi + 0x1c], 0
test byte [ebp + 0x14], 0x10
je 0x46bd6b
or byte [esi + 0xb], 1
test byte [ebp + 0x14], 0x20
je 0x46bd78
or byte [esi + 0x96], 1
cmp dword [ebp - 0x24], 0
je 0x46bd8d
movzx eax, word [ebp - 0x2c]
push eax
push dword [ebp + 0x10]
mov ecx, esi
call fcn.004149f6
cmp dword [ebp + 0x10], 0
jne 0x46bd9a
mov dword [ebp + 0x10], 0x48e984
cmp dword [ebp - 0x14], 0
je 0x46bde6
cmp dword [ebp - 0x18], 0
je 0x46bde6
mov eax, dword [edi + 0xf0]
mov dword [edi + 0x14c], esi
mov dword [eax], esi
push edi
mov byte [edi + 0x72], 1
mov byte [edi + 0x71], 0xff
call fcn.00475a4c
cmp byte [ebp - 1], 0
pop ecx
jne 0x46bde6
cmp dword [ebp - 0x10], 0
je 0x46bde6
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 - 0xc]
mov al, byte [eax + 0xd]
test al, al
je 0x46bdf3
mov byte [esi + 0xd], al
mov al, byte [ebp - 3]
xor ecx, ecx
cmp word [ebp - 0x30], cx
mov byte [esi + 0xc], al
jne 0x46be51
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 0xc]
push 0xffffffffffffffff
push 0
push str.__MAIN__
call fcn.0041065a
test eax, eax
jne 0x46be24
mov eax, 0x492c80
jmp 0x46be3b
push dword [eax]
push 0x495cb8
call fcn.0042ece0
test al, al
pop ecx
pop ecx
jne 0x46be48
mov eax, 0x4903a0
push eax
push 0x497200
mov ecx, esi
call fcn.00432698
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
mov eax, dword [ebp - 0xc]
test byte [eax + 0xe], 0x80
je 0x46be5e
and byte [esi + 0xe], 0xfe
mov eax, dword [ebp + 0x10]
cmp word [eax], cx
je 0x46be81
mov al, byte [esi + 0xe]
test al, 8
jne 0x46be81
cmp byte [esi + 0x94], 0
je 0x46be81
test al, 1
mov dword [ebp + 0xc], 1
jne 0x46be84
mov dword [ebp + 0xc], ecx
cmp dword [0x4a5e10], ecx
je 0x46bec3
cmp dword [ebp + 0xc], ecx
je 0x46bec3
push str.ENTER:
lea ecx, [ebp + 0x14]
call fcn.0043ccfc
push dword [ebp + 0x10]
lea ecx, [ebp + 0x14]
call fcn.00432d25
push 0
push 0x11
push 0
push dword [ebp + 0x14]
mov ecx, esi
call fcn.00416c88
lea ecx, [ebp + 0x14]
call fcn.0042dd2d
xor ecx, ecx
cmp dword [ebp - 0x14], ecx
mov byte [esi + 0x94], 1
je 0x46bfc4
cmp dword [ebp - 0x18], ecx
je 0x46bfc4
cmp byte [ebp - 1], 0
mov ecx, edi
je 0x46bfb9
mov eax, dword [edi]
push 0
push 0x271d
mov byte [edi + 0x71], 0x81
mov byte [edi + 0x70], 0x10
call dword [eax + 8]
push str.0x_X
push str.__WinID
push dword [edi + 0x18]
push esi
call fcn.00434e4a
and dword [edi + 0x154], 0
add esp, 0x10
push dword [ebp + 0x18]
mov ecx, esi
call fcn.00465cde
cmp dword [edi + 0xd0], 0
jg 0x46bf42
mov eax, dword [edi + 0xbc]
cmp dword [eax], 0
jg 0x46bf42
mov eax, dword [edi + 0xcc]
cmp dword [eax], 0
jle 0x46bf62
push 0
push 0
push 0x10
push dword [edi + 0x18]
mov byte [edi + 0x71], 0xff
call dword [sym.imp.USER32.dll_PostMessageW]
push 0x20
mov ecx, edi
call fcn.00472384
mov byte [edi + 0x71], 0x81
xor edi, edi
mov eax, dword [ebp + 0x10]
cmp word [eax], di
je 0x46bf9f
cmp dword [ebp + 0xc], edi
je 0x46bf9f
push str.LEAVE:
lea ecx, [ebp + 0x14]
call fcn.0043ccfc
push dword [ebp + 0x10]
lea ecx, [ebp + 0x14]
call fcn.00432d25
push edi
push 0x11
push edi
push dword [ebp + 0x14]
mov ecx, esi
call fcn.00416c88
lea ecx, [ebp + 0x14]
call fcn.0042dd2d
cmp dword [ebp + 0x1c], edi
mov eax, dword [esi + 0x90]
mov dword [ebp + 0x10], eax
je 0x46bff5
push dword [ebp - 0x34]
mov ecx, esi
call fcn.0041f0e9
jmp 0x46c01e
mov byte [edi + 0x70], 0
call fcn.00472531
jmp 0x46bf62
push dword [ebp + 8]
mov ecx, esi
call fcn.00465cde
mov eax, dword [esi + 0x2c]
xor edi, edi
cmp eax, edi
je 0x46bf64
cmp byte [ebp - 2], 0
jne 0x46bf64
push edi
push edi
push 0x10
push dword [eax + 0x18]
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, dword [esi + 0x2c]
mov dword [ebp - 0x28], eax
jmp 0x46bf64
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x48], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x4c], eax
mov al, byte [ebp - 4]
mov byte [esi + 0xb], al
mov al, byte [ebp - 5]
push ebx
mov byte [esi + 0x96], al
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [esi + 0x2c], edi
je 0x46c029
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x2c], eax
lea ecx, [ebp - 0x44]
call fcn.0043cb8e
mov ecx, dword [ebp - 0x28]
cmp ecx, edi
je 0x46c03f
mov eax, dword [ecx]
push 1
call dword [eax + 0xc]
cmp byte [ebp - 1], 0
jne 0x46c076
mov esi, dword [ebp - 0x10]
cmp esi, edi
je 0x46c076
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec dword [esi + 0xd0]
cmp byte [esi + 0x71], 0x81
je 0x46c06f
push edi
push edi
push 0x43d
push dword [esi + 0x18]
call dword [sym.imp.USER32.dll_PostMessageW]
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.00431aa1
cmp dword [ebp - 0x24], edi
je 0x46c10e
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [ebp - 0xc]
push 0xffffffffffffffff
push edi
push 0x4902f6
mov ecx, esi
call fcn.0041065a
cmp eax, edi
je 0x46c0af
push dword [eax]
push 0x4902f8
call fcn.00431b18
pop ecx
pop ecx
push 0xffffffffffffffff
push edi
push 0x4902d6
mov ecx, esi
call fcn.0041065a
cmp eax, edi
je 0x46c0d0
push dword [eax]
push 0x4902d8
call fcn.00431b18
pop ecx
pop ecx
push 0xffffffffffffffff
push edi
push 0x4902c2
mov ecx, esi
call fcn.0041065a
cmp eax, edi
je 0x46c0f1
push dword [eax]
push 0x4902c4
call fcn.00431b18
pop ecx
pop ecx
cmp word [ebp - 0x2c], di
jne 0x46c105
push dword [ebp - 0x1c]
call fcn.0040d55e
pop ecx
call fcn.00410450
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x46c111
mov esi, dword [ebp - 0xc]
cmp dword [esi + 0x2c], edi
je 0x46c11c
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x2c], eax
cmp byte [ebp - 1], 0
jne 0x46c12a
push edi
mov ecx, esi
call fcn.00443dd2
lea ecx, [ebp - 0x1c]
call fcn.0042dd2d
lea ecx, [ebp - 0x20]
call fcn.00417ab4
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
leave
ret 0x18