Function at 0x408560
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x4bd0ff
mov eax, dword fs:[0]
push eax
sub esp, 0xcb8
mov eax, dword [0x4f36a0]
xor eax, esp
mov dword [esp + 0xcb0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4f36a0]
xor eax, esp
push eax
lea eax, [esp + 0xccc]
mov dword fs:[0], eax
mov eax, dword [esp + 0xcdc]
push 0x206
xor ebx, ebx
lea edx, [esp + 0xac2]
xor ecx, ecx
push ebx
push edx
mov dword [esp + 0x30], eax
mov word [esp + 0xac8], cx
call fcn.0049ca10
add esp, 0xc
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
push 0x104
lea eax, [esp + 0xac0]
push eax
mov dword [esp + 0xcdc], ebx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov ecx, dword [0x4f9f84]
mov dword [esp + 0x20], ecx
lea edx, [esp + 0xabc]
push edx
push str._sSogouPy.ime
lea edx, [esp + 0x28]
mov byte [esp + 0xcdc], 1
call fcn.00407a00
mov eax, 0x5c
add esp, 8
mov word [esp + 0x5c4], ax
mov dword [esp + 0x5c8], ebx
mov dword [esp + 0x5cc], ebx
mov byte [esp + 0xcd4], 2
mov eax, dword [esp + 0x20]
lea esi, [esp + 0x16c]
call fcn.00407c00
test eax, eax
je 0x40889d
lea eax, [esp + 0xa3c]
shr eax, 0x10
mov dword [esp + 0x1c], eax
jmp 0x408670
push 0x7e
lea edx, [esp + 0xa42]
xor ecx, ecx
push ebx
push edx
mov word [esp + 0xa48], cx
call fcn.0049ca10
add esp, 0xc
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x170]
push ecx
call fcn.00407ad0
mov edi, dword [eax]
mov edx, 4
lea eax, [esp + 0x50]
lea ecx, [edx - 3]
lea esi, [esp + 0x4c]
mov dword [esp + 0x44], vtable.t_str.0
mov byte [esp + 0x160], 1
mov word [esp + 0x15e], dx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ebx
mov dword [esp + 0x164], ebx
mov dword [esp + 0x48], ebx
call fcn.004495a0
lea eax, [esp + 0x50]
cmp byte [esp + 0x160], bl
jne 0x4086f2
mov eax, dword [esp + 0x4c]
xor ecx, ecx
mov word [eax + 4], cx
mov ebp, edi
cmp edi, ebx
jne 0x408703
mov ebp, 0x4d6464
mov eax, ebp
lea edx, [eax + 2]
jmp 0x408710
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x408710
sub eax, edx
sar eax, 1
lea edi, [eax + 1]
mov ecx, edi
lea esi, [esp + 0x4c]
mov dword [esp + 0x48], eax
call fcn.004495a0
lea eax, [esp + 0x50]
cmp byte [esp + 0x160], bl
jne 0x408742
mov eax, dword [esp + 0x4c]
lea edx, [edi + edi]
push edx
add eax, 4
push ebp
push eax
call fcn.0049c670
add esp, 0xc
mov byte [esp + 0xcd4], 6
mov eax, dword [esp + 0x18]
lea ecx, [eax - 0xc]
cmp ecx, 0x4f9f74
je 0x408788
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x408788
mov eax, dword [esp + 0x18]
add eax, 0xfffffff4
push eax
call fcn.00498b08
add esp, 4
lea edx, [esp + 0xa3c]
push 0x40
push edx
lea ecx, [esp + 0x4c]
call fcn.004083d0
mov eax, dword [0x4f9f84]
add esp, 8
mov dword [esp + 0x14], eax
cmp word [esp + 0x1c], bx
jne 0x4087c4
lea ecx, [esp + 0xa3c]
movzx eax, cx
push eax
lea ecx, [esp + 0x18]
call fcn.004037f0
jmp 0x408800
lea edx, [esp + 0xa3c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
cmp esi, ebx
je 0x408800
mov ecx, esi
lea edx, [esp + 0x14]
call fcn.004034c0
test eax, eax
je 0x408800
mov edx, dword [esp + 0x14]
lea eax, [esi + esi]
push eax
lea ecx, [esp + 0xa40]
push ecx
push edx
call fcn.0049c670
add esp, 0xc
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0xcdc], 7
call fcn.004097c0
mov esi, dword [esp + 0x14]
lea edx, [esi - 0xc]
cmp edx, 0x4f9f74
je 0x40883d
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x40883d
push esi
call fcn.00498b08
add esp, 4
mov byte [esp + 0xcd4], 2
mov dword [esp + 0x44], vtable.t_str.0
cmp byte [esp + 0x160], bl
jne 0x40886b
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x50]
cmp eax, ecx
je 0x40886b
push eax
call fcn.00498f5b
add esp, 4
mov eax, dword [esp + 0x5c8]
cmp eax, ebx
je 0x4088a4
cmp dword [esp + 0x5cc], ebx
je 0x4088a4
lea edx, [esp + 0x16c]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov dword [esp + 0x5cc], eax
cmp eax, ebx
jne 0x408670
mov eax, dword [esp + 0x5c8]
mov dword [esp + 0x5cc], ebx
cmp eax, ebx
je 0x4088c2
cmp eax, 0xffffffff
je 0x4088c2
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [esp + 0x5c8], ebx
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x4d65d8
push 0x4d65e8
mov dword [esp + 0x44], ebx
call edi
mov ebp, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call ebp
mov esi, eax
cmp esi, ebx
je 0x4088f5
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [esp + 0x3c], ebx
je 0x408bfa
push str.Wow64EnableWow64FsRedirection
push 0x4d65e8
call edi
push eax
call ebp
mov dword [esp + 0x1c], eax
cmp eax, ebx
je 0x408bfa
push ebx
call eax
push 0x104
lea ecx, [esp + 0xac0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov edx, dword [0x4f9f84]
mov dword [esp + 0x18], edx
lea eax, [esp + 0xabc]
push eax
push str._sSogouPy.ime
lea edx, [esp + 0x20]
mov byte [esp + 0xcdc], 8
call fcn.00407a00
mov ecx, 0x5c
add esp, 8
mov word [esp + 0xa2c], cx
mov dword [esp + 0xa30], ebx
mov dword [esp + 0xa34], ebx
mov byte [esp + 0xcd4], 9
mov eax, dword [esp + 0x18]
lea esi, [esp + 0x5d4]
call fcn.00407c00
test eax, eax
je 0x408b7d
lea eax, [esp + 0xa3c]
shr eax, 0x10
mov dword [esp + 0x40], eax
push 0x7e
lea eax, [esp + 0xa42]
xor edx, edx
push ebx
push eax
mov word [esp + 0xa48], dx
call fcn.0049ca10
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x5d8]
push edx
call fcn.00407ad0
mov esi, dword [eax]
lea ecx, [esp + 0x44]
call fcn.00448930
mov ebp, esi
cmp esi, ebx
jne 0x4089e9
mov ebp, 0x4d6464
mov eax, ebp
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4089f0
sub eax, edx
sar eax, 1
lea edi, [eax + 1]
mov ecx, edi
lea esi, [esp + 0x4c]
mov dword [esp + 0x48], eax
call fcn.004495a0
lea eax, [esp + 0x50]
cmp byte [esp + 0x160], bl
jne 0x408a22
mov eax, dword [esp + 0x4c]
lea ecx, [edi + edi]
push ecx
add eax, 4
push ebp
push eax
call fcn.0049c670
add esp, 0xc
mov byte [esp + 0xcd4], 0xd
mov eax, dword [esp + 0x38]
lea edx, [eax - 0xc]
cmp edx, 0x4f9f74
je 0x408a68
add eax, 0xfffffff4
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x408a68
mov eax, dword [esp + 0x38]
add eax, 0xfffffff4
push eax
call fcn.00498b08
add esp, 4
lea eax, [esp + 0xa3c]
push 0x40
push eax
lea ecx, [esp + 0x4c]
call fcn.004083d0
mov ecx, dword [0x4f9f84]
add esp, 8
mov dword [esp + 0x14], ecx
cmp word [esp + 0x40], bx
jne 0x408aa5
lea edx, [esp + 0xa3c]
movzx eax, dx
push eax
lea ecx, [esp + 0x18]
call fcn.004037f0
jmp 0x408ae1
lea eax, [esp + 0xa3c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
cmp esi, ebx
je 0x408ae1
mov ecx, esi
lea edx, [esp + 0x14]
call fcn.004034c0
test eax, eax
je 0x408ae1
mov eax, dword [esp + 0x14]
lea ecx, [esi + esi]
push ecx
lea edx, [esp + 0xa40]
push edx
push eax
call fcn.0049c670
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x2c]
push edx
mov byte [esp + 0xcdc], 0xe
call fcn.004097c0
mov esi, dword [esp + 0x14]
lea eax, [esi - 0xc]
cmp eax, 0x4f9f74
je 0x408b1d
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x408b1d
push esi
call fcn.00498b08
add esp, 4
mov byte [esp + 0xcd4], 9
mov dword [esp + 0x44], vtable.t_str.0
cmp byte [esp + 0x160], bl
jne 0x408b4b
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x50]
cmp eax, ecx
je 0x408b4b
push eax
call fcn.00498f5b
add esp, 4
mov eax, dword [esp + 0xa30]
cmp eax, ebx
je 0x408b84
cmp dword [esp + 0xa34], ebx
je 0x408b84
lea edx, [esp + 0x5d4]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov dword [esp + 0xa34], eax
cmp eax, ebx
jne 0x4089a4
mov eax, dword [esp + 0xa30]
mov dword [esp + 0xa34], ebx
cmp eax, ebx
je 0x408ba2
cmp eax, 0xffffffff
je 0x408ba2
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [esp + 0xa30], ebx
push 1
call dword [esp + 0x20]
mov eax, dword [esp + 0xa30]
mov dword [esp + 0xa34], ebx
cmp eax, ebx
je 0x408bcd
cmp eax, 0xffffffff
je 0x408bcd
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [esp + 0xa30], ebx
mov byte [esp + 0xcd4], 2
mov esi, dword [esp + 0x18]
lea eax, [esi - 0xc]
cmp eax, 0x4f9f74
je 0x408bfa
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x408bfa
push esi
call fcn.00498b08
add esp, 4
xor edi, edi
cmp dword [esp + 0x2c], ebx
jbe 0x408c69
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 4]
xor esi, esi
cmp eax, ebx
jbe 0x408c46
mov ebp, ecx
cmp edi, dword [esp + 0x2c]
jae 0x408cfa
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + edi*4]
cmp esi, eax
jae 0x408cfa
mov eax, dword [ebp]
mov eax, dword [eax + esi*4]
push ecx
push eax
call fcn.00498ec8
add esp, 8
test eax, eax
je 0x408c62
mov eax, dword [ebp + 4]
inc esi
cmp esi, eax
jb 0x408c11
cmp edi, dword [esp + 0x2c]
jae 0x408cfa
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
lea edx, [ecx + edi*4]
push edx
push eax
call fcn.004097c0
inc edi
cmp edi, dword [esp + 0x2c]
jb 0x408c02
mov eax, dword [esp + 0x5c8]
mov dword [esp + 0x5cc], ebx
cmp eax, ebx
je 0x408c8e
cmp eax, 0xffffffff
je 0x408c8e
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [esp + 0x5c8], ebx
mov esi, dword [esp + 0x20]
lea ecx, [esi - 0xc]
cmp ecx, 0x4f9f74
je 0x408cb4
add esi, 0xfffffff4
push esi
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x408cb4
push esi
call fcn.00498b08
add esp, 4
mov edi, dword [esp + 0x28]
cmp edi, ebx
je 0x408cd2
mov ebx, dword [esp + 0x2c]
call fcn.00409920
mov edx, dword [esp + 0x28]
push edx
call fcn.00498f5b
add esp, 4
mov ecx, dword [esp + 0xccc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xcb0]
xor ecx, esp
call fcn.00497c58
add esp, 0xcc4
ret
push 0x80070057
call fcn.004071d0
int3