Function at 0x438960
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48b056
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x4bc1dc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x48], ebx
cmp word [ebx], 0x5c
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x34], edi
jne 0x438dab
cmp word [esi], 0x19
jb 0x4389e5
push 0x19
push 0x4a2aa8
push ebx
call fcn.00471574
add esp, 0xc
test eax, eax
jne 0x4389e5
cmp word [ebx + 0x32], 0x3b
mov ecx, 0x2d
push 0x4a2adc
mov eax, 0x19
cmove eax, ecx
push eax
push 0
push esi
push ebx
call fcn.00437c50
add esp, 0x14
cmp word [esi], 4
jb 0x438a16
push 4
push 0x4a2a38
push ebx
call fcn.00473d2b
add esp, 0xc
test eax, eax
jne 0x438a16
push 0x490b00
push 4
push eax
push esi
push ebx
call fcn.00437c50
add esp, 0x14
jmp 0x438dab
cmp word [esi], 0xc
jbe 0x438a47
push 0xc
push str.DeviceMup_
push ebx
call fcn.00471574
add esp, 0xc
test eax, eax
jne 0x438a47
push 0x4a2adc
push 0xc
push eax
push esi
push ebx
call fcn.00437c50
add esp, 0x14
jmp 0x438dab
cmp byte [0x4bdfaa], 0
je 0x438a7d
cmp word [ebx], 0x5c
jne 0x438dab
cmp word [ebx + 2], 0x5c
je 0x438dab
call dword [sym.imp.USER32.dll_GetActiveWindow]
push 0
push esi
push ebx
push eax
call fcn.00438dd0
add esp, 0x10
jmp 0x438dab
cmp word [esi], 0xc
jbe 0x438b2d
push 0xc
push str.SystemRoot_
push ebx
call fcn.00471574
add esp, 0xc
test eax, eax
jne 0x438b2d
mov ecx, dword [0x4bddd8]
test ecx, ecx
jne 0x438b0b
push 0x104
push 0x4bdbd0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push 0x5c
push 0x4bdbd6
call fcn.00472ae7
add esp, 8
xor ecx, ecx
mov word [eax], cx
mov ecx, 0x4bdbd0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x438ad5
sub ecx, edx
mov eax, 0x5c
sar ecx, 1
mov word [ecx*2 + 0x4bdbd0], ax
inc ecx
mov dword [0x4bddd8], ecx
lea eax, [ecx + ecx]
cmp eax, 0x208
jae 0x438b28
xor edx, edx
mov word [eax + 0x4bdbd0], dx
cmp ecx, 0xc
ja 0x438b2d
push 0x4bdbd0
push 0xc
push 0
push esi
push ebx
call fcn.00437c50
add esp, 0x14
jmp 0x438dab
call fcn.004741a1
mov eax, dword [0x4bddf4]
test al, 1
jne 0x438b56
or eax, 1
push 0x4bdddc
mov dword [0x4bddf4], eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x48ef40
call fcn.00471422
add esp, 4
push 0x4bdddc
mov dword [ebp - 0x50], 0x4bdddc
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x4bddf4]
mov dword [ebp - 4], 0
test al, 2
jne 0x438bb8
or eax, 2
mov dword [0x4bddf4], eax
mov ecx, 0x4bddf8
mov byte [ebp - 4], 1
mov dword [0x4bddf8], 0
mov dword [0x4bddfc], 0
call fcn.004393e0
push 0x48eec0
mov dword [0x4bddf8], eax
call fcn.00471422
add esp, 4
mov byte [ebp - 4], 0
cmp byte [0x4bdfab], 0
je 0x438bcb
mov ecx, 0x4bddf8
call fcn.004395e0
mov eax, dword [edi]
mov ecx, 0x4bddf8
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00439560
mov ebx, dword [0x4bddf8]
cmp eax, ebx
je 0x438c48
lea esi, [eax + 0x10]
mov edi, 8
lea edx, [ebp - 0x1c]
nop
mov ecx, dword [edx]
cmp ecx, dword [esi]
jne 0x438c15
add edx, 4
add esi, 4
sub edi, 4
jae 0x438c00
xor edi, edi
jmp 0x438c41
movzx edi, cl
movzx ecx, byte [esi]
sub edi, ecx
jne 0x438c41
movzx edi, byte [edx + 1]
movzx ecx, byte [esi + 1]
sub edi, ecx
jne 0x438c41
movzx edi, byte [edx + 2]
movzx ecx, byte [esi + 2]
sub edi, ecx
jne 0x438c41
movzx edi, byte [edx + 3]
movzx ecx, byte [esi + 3]
sub edi, ecx
mov dword [ebp - 0x38], eax
test edi, edi
jns 0x438c4b
mov dword [ebp - 0x38], ebx
lea edi, [ebp - 0x38]
mov edi, dword [edi]
cmp edi, ebx
jne 0x438cf6
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
call fcn.0040dcd0
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x44]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x30]
call fcn.00431270
movzx edx, byte [0x4bdb70]
mov ecx, 0x4bddf8
push edx
push eax
push 0
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 3
push eax
call fcn.00431850
mov eax, dword [ebp - 0x24]
lea ecx, [ebp - 0x24]
mov edi, dword [ebp - 0x3c]
push eax
mov byte [ebp - 4], 2
push dword [eax]
lea eax, [ebp - 0x38]
push eax
call fcn.00439960
push dword [ebp - 0x24]
call fcn.004705af
mov eax, dword [ebp - 0x44]
lea ecx, [ebp - 0x44]
add esp, 4
mov byte [ebp - 4], 0
push eax
push dword [eax]
lea eax, [ebp - 0x38]
push eax
call fcn.00439960
push dword [ebp - 0x44]
call fcn.004705af
lea eax, [edi + 0x1c]
push eax
push dword [ebp - 0x34]
push dword [ebp + 0x14]
call fcn.0043bed0
add esp, 0x10
mov eax, dword [edi + 0x1c]
mov esi, dword [eax]
mov dword [ebp - 0x38], esi
cmp esi, eax
je 0x438da0
lea ecx, [esi + 0x10]
call fcn.0046b860
lea ecx, [esi + 0x10]
mov dword [ebp - 0x34], eax
call fcn.0046b310
mov ebx, dword [ebp - 0x34]
mov edx, eax
mov eax, dword [ebp - 0x4c]
movzx ecx, word [eax]
cmp ebx, ecx
ja 0x438d4d
push ebx
push dword [ebp - 0x48]
push edx
call fcn.00471574
add esp, 0xc
test eax, eax
jne 0x438d4d
mov ecx, dword [ebp - 0x48]
cmp word [ecx + ebx*2], 0x5c
je 0x438d5f
mov eax, dword [ebp - 0x4c]
movzx eax, word [eax]
cmp ebx, eax
je 0x438d5f
lea ecx, [ebp - 0x38]
call fcn.00431e80
mov esi, dword [ebp - 0x38]
cmp esi, dword [edi + 0x1c]
jne 0x438d06
jmp 0x438da0
mov edi, dword [ebp - 0x4c]
lea edx, [ebx + 4]
mov dword [ebp - 0x34], edx
movzx eax, word [edi]
cmp eax, edx
jb 0x438d88
push 4
lea eax, [ecx + ebx*2]
push 0x4a2a38
push eax
call fcn.00471574
add esp, 0xc
test eax, eax
cmove ebx, dword [ebp - 0x34]
lea ecx, [esi + 0x14]
call fcn.0046b310
push eax
push ebx
push 0
push edi
push dword [ebp - 0x48]
call fcn.00437c50
add esp, 0x14
push 0x4bdddc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00470e77
mov esp, ebp
pop ebp
ret