Function at 0x46f424
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x554
push ebx
push esi
lea eax, [ebp + 8]
push edi
push eax
mov dword [ebp - 0x20], ecx
call fcn.00430961
mov eax, dword [ebp + 8]
cmp word [eax], 0x2d
pop ecx
mov bl, 0x2a
jne 0x46f44b
add bl, 3
push 4
lea eax, [ebp + 8]
push eax
push 0x49c25c
call fcn.00437ad0
add esp, 0xc
test al, al
push 4
lea eax, [ebp + 8]
push eax
je 0x46f634
mov esi, dword [ebp + 8]
xor ebx, ebx
push 0x49dd6c
mov dword [ebp - 0x34], ebx
call fcn.00437ad0
add esp, 0xc
test al, al
je 0x46f48e
mov dword [ebp - 0x34], 0x80000000
jmp 0x46f4a9
push 6
lea eax, [ebp + 8]
push eax
push 0x49dd64
call fcn.00437ad0
add esp, 0xc
test al, al
je 0x46f5cc
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x44], ebx
call fcn.00435d62
mov ecx, dword [ebp - 0x20]
push 1
push ebx
lea eax, [ebp - 0x10]
push eax
push dword [ebp + 8]
call fcn.0043d5b3
mov eax, dword [ebp - 0x10]
mov dword [ebp + 8], eax
push 5
lea eax, [ebp + 8]
push eax
push 0x49dd5c
mov dword [ebp - 8], ebx
call fcn.00437ad0
mov ecx, dword [ebp + 8]
add esp, 0xc
cmp ecx, ebx
je 0x46f4fa
mov dx, word [ecx]
cmp dx, 0x2d
je 0x46f4fa
cmp dx, 0x5c
je 0x46f4fa
mov al, 1
test al, al
je 0x46f516
push 0xd
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 8]
push eax
mov dword [ebp - 8], ecx
call fcn.00416853
add esp, 0xc
mov dword [ebp + 8], eax
push 8
lea eax, [ebp + 8]
push eax
xor esi, esi
push 0x49dd50
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], ebx
call fcn.00437ad0
add esp, 0xc
test al, al
je 0x46f55c
mov eax, dword [ebp + 8]
cmp word [eax], 0x2a
jne 0x46f54a
add dword [ebp + 8], 2
push 0x3d
pop esi
mov dword [ebp - 0x2c], ebx
jmp 0x46f55c
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp + 8]
push eax
call fcn.00438b6a
mov esi, dword [ebp - 0x30]
pop ecx
pop ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
push 0xd
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00416853
add esp, 0xc
xor edi, edi
cmp word [eax], bx
je 0x46f57d
mov edi, eax
lea ecx, [ebp - 0x28]
call fcn.00435d62
push ebx
xor eax, eax
xor ecx, ecx
or eax, ecx
push eax
and esi, 0xfeffff
or esi, dword [ebp - 0x34]
lea eax, [ebp - 0x28]
push esi
push edi
push eax
push dword [ebp - 0x1c]
call fcn.0042eced
mov ecx, dword [ebp - 0x20]
add esp, 0x18
push dword [ebp - 0x28]
push dword [ebp - 8]
call fcn.00435749
lea ecx, [ebp - 0x28]
call fcn.0043092f
lea ecx, [ebp - 0x10]
call fcn.0043092f
xor eax, eax
jmp 0x46fe68
movzx esi, word [esi]
mov eax, esi
or eax, 0x20
cmp ax, 0x61
jb 0x46f5e0
cmp ax, 0x7a
jbe 0x46f5fd
mov eax, esi
call fcn.004359b2
test al, al
jne 0x46f5fd
cmp si, 0x61
jb 0x46f5f7
cmp si, 0x66
jbe 0x46f5fd
cmp si, 0x78
jne 0x46f604
mov eax, 0x49dd44
jmp 0x46f609
mov eax, 0x49dd30
push 0xffffffffffffffff
push eax
lea ecx, [ebp - 8]
call fcn.004403f9
push dword [ebp + 8]
lea ecx, [ebp - 8]
call fcn.00435dd0
push dword [ebp - 8]
mov ecx, dword [ebp - 0x20]
call fcn.00428650
mov esi, eax
lea ecx, [ebp - 8]
jmp 0x46fe61
push 0x49dd28
call fcn.00437ad0
add esp, 0xc
push dword [ebp - 0x20]
lea ecx, [ebp - 0x50]
mov byte [ebp - 0x39], al
call fcn.00437de1
mov esi, 0x4949a4
push esi
lea ecx, [ebp - 0x18]
call fcn.004403c3
push esi
lea ecx, [ebp - 0x40]
call fcn.004403c3
push esi
lea ecx, [ebp - 0x44]
call fcn.004403c3
push esi
lea ecx, [ebp - 0x1c]
call fcn.004403c3
mov dword [ebp - 0x10], 0x80000000
mov byte [ebp - 0x11], 0
mov byte [ebp - 0x22], 0
mov byte [ebp - 0x21], 0
mov byte [ebp - 0x23], 0
mov byte [ebp - 2], 0
mov byte [ebp - 9], 0
movsx ebx, bl
jmp 0x46f738
lea eax, [edi + 2]
push 5
push eax
push 0x49dd20
call fcn.00431867
add esp, 0xc
test al, al
je 0x46f6bc
mov byte [ebp - 2], 1
jmp 0x46f72e
push 1
lea eax, [edi + 2]
push eax
push 0x4980fc
call fcn.00431867
add esp, 0xc
test al, al
je 0x46f6d9
mov byte [ebp - 9], 1
jmp 0x46f72e
push 1
lea eax, [edi + 2]
push eax
push 0x49dd1c
call fcn.00431867
add esp, 0xc
test al, al
je 0x46f6f6
mov byte [ebp - 0x22], 1
jmp 0x46f72e
push 1
lea eax, [edi + 2]
push eax
push 0x497f98
call fcn.00431867
add esp, 0xc
test al, al
je 0x46f713
mov byte [ebp - 0x21], 1
jmp 0x46f72e
push 1
lea eax, [edi + 2]
push eax
push 0x49d14c
call fcn.00431867
add esp, 0xc
test al, al
je 0x46f757
mov byte [ebp - 0x23], 1
lea eax, [ebp + 8]
push eax
call fcn.0040459d
pop ecx
mov edi, dword [ebp + 8]
movzx eax, word [edi]
cmp ebx, eax
je 0x46f69f
jmp 0x46f757
cmp ax, 0x21
jne 0x46f75f
inc edi
inc edi
mov byte [ebp - 0x11], 1
mov dword [ebp + 8], edi
mov ax, word [edi]
test ax, ax
jne 0x46f748
lea eax, [ebp + 8]
push eax
call fcn.00430961
pop ecx
push 1
push 0x2c
pop edi
push edi
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x50]
call fcn.0044212f
push 0
lea ecx, [ebp - 0x18]
push ecx
push eax
call fcn.004387a2
push dword [ebp - 0x18]
call fcn.0040cd10
push dword [ebp - 0x18]
call fcn.0040eec0
mov ebx, eax
mov ax, word [ebx]
add esp, 0x14
cmp ax, 0x5c
mov dword [ebp - 0x28], ebx
je 0x46f7b2
cmp ax, 0x2f
mov byte [ebp - 1], 0
jne 0x46f7b6
mov byte [ebp - 1], 1
cmp byte [ebp - 2], 0
jne 0x46f811
cmp byte [ebp - 1], 0
je 0x46f811
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.DLL_lstrlenW]
mov ebx, dword [ebp - 0x18]
and dword [ebp - 0x18], 0
mov edi, eax
lea eax, [edi + 3]
push eax
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x34], ebx
call fcn.00435da9
mov eax, dword [ebp - 0x18]
inc edi
push edi
mov dword [ebp - 0x28], eax
mov word [eax], 0x20
mov word [eax + 2], 0x3a
add eax, 4
push ebx
push eax
call fcn.00404561
add esp, 0xc
lea ecx, [ebp - 0x34]
call fcn.0043092f
mov ebx, dword [ebp - 0x28]
push 0x2c
pop edi
mov eax, dword [ebp + 8]
cmp word [eax], di
jne 0x46f83b
add dword [ebp + 8], 2
push 1
push edi
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x50]
call fcn.0044212f
push 0
lea ecx, [ebp - 0x40]
push ecx
push eax
call fcn.004386e6
add esp, 0xc
push dword [ebp - 0x40]
call fcn.0040eec0
cmp byte [ebp - 2], 0
pop ecx
mov dword [ebp - 0x2c], eax
jne 0x46f8c2
mov eax, dword [ebp + 8]
cmp word [eax], di
jne 0x46f8a0
add dword [ebp + 8], 2
push edi
lea eax, [ebp - 0x10]
push eax
push 1
push edi
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x50]
call fcn.0044212f
push eax
call fcn.00438933
mov eax, dword [ebp + 8]
add esp, 0xc
cmp word [eax], di
jne 0x46f8a0
add dword [ebp + 8], 2
push 1
push edi
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x50]
call fcn.0044212f
push 0
lea ecx, [ebp - 0x1c]
push ecx
push eax
call fcn.004386e6
add esp, 0xc
mov eax, dword [ebp - 0x1c]
and dword [ebp - 0x1c], 0
push eax
mov dword [ebp - 0x34], eax
call fcn.0040eec0
pop ecx
push eax
lea ecx, [ebp - 0x1c]
call fcn.0044042b
lea ecx, [ebp - 0x34]
call fcn.0043092f
cmp byte [ebp - 0x39], 0
je 0x46f9bf
call fcn.00433707
cmp byte [ebp - 9], 0
je 0x46f8e7
push dword [ebp - 0x18]
call fcn.0043394d
pop ecx
mov esi, eax
jmp 0x46fe3e
xor esi, esi
cmp byte [ebp - 0x21], 0
mov dword [ebp + 8], esi
je 0x46f948
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x2c]
push eax
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x34], esi
call fcn.0043aabb
mov edi, dword [ebp - 0x2c]
xor eax, eax
pop ecx
inc eax
cmp byte [ebp - 0x23], 0
pop ecx
mov word [edi], si
je 0x46f918
xor eax, eax
cmp dword [ebp - 0x34], esi
jg 0x46f92f
jl 0x46f928
cmp dword [ebp - 0x38], 0x100000
jae 0x46f92f
mov esi, 0x80070057
jmp 0x46f980
push eax
push dword [ebp - 0x34]
push dword [ebp - 0x38]
push dword [ebp - 0x18]
call fcn.004337e9
mov esi, eax
add esp, 0x10
mov dword [ebp + 8], esi
jmp 0x46f980
cmp byte [ebp - 0x22], 0
push 4
pop eax
je 0x46f954
push 5
pop eax
mov edi, dword [ebp - 0x2c]
cmp edi, esi
je 0x46f95e
or eax, 2
cmp dword [ebp - 0x10], esi
jg 0x46f96a
mov dword [ebp - 0x10], 1
lea ecx, [ebp + 8]
push ecx
push dword [ebp - 0x10]
push edi
push eax
push dword [ebp - 0x18]
call fcn.00469a1d
add esp, 0x14
mov esi, eax
push edi
call dword [sym.imp.KERNEL32.DLL_lstrlenW]
add eax, 0x3c
push eax
lea ecx, [ebp - 8]
call fcn.00435d80
push edi
push esi
push dword [ebp + 8]
push 0x49dd08
push dword [ebp - 8]
call dword [sym.imp.USER32.DLL_wsprintfW]
mov ecx, dword [ebp - 0x20]
add esp, 0x14
push dword [ebp - 8]
push dword [ebp - 0x1c]
call fcn.00435749
lea ecx, [ebp - 8]
jmp 0x46fe39
cmp byte [ebp - 2], 0
jne 0x46f9e4
mov eax, dword [ebp - 0x2c]
cmp word [eax], 0
jne 0x46f9e4
cmp byte [ebp - 9], 0
je 0x46f9da
cmp word [ebx], 0
jne 0x46f9e4
mov esi, 0x80070057
jmp 0x46fe3e
lea ecx, [ebp + 8]
call fcn.004319b4
lea ecx, [ebp + 8]
call fcn.0043199b
test eax, eax
mov dword [ebp - 0x34], eax
jge 0x46fa12
push 0x49dcec
push dword [ebp - 0x20]
call fcn.0040cde2
pop ecx
pop ecx
xor esi, esi
inc esi
jmp 0x46fe3e
cmp byte [ebp - 2], 0
je 0x46fb37
cmp dword [0x4ad07c], 0
jne 0x46fa2d
push 0x78
pop esi
jmp 0x46fe3e
push 0x3d
push dword [ebp - 0x28]
call dword [sym.imp.SHLWAPI.DLL_StrChrW]
mov ebx, eax
xor esi, esi
cmp ebx, esi
je 0x46fa45
mov word [ebx], si
inc ebx
inc ebx
mov eax, dword [ebp - 0x28]
cmp word [eax], si
je 0x46f9da
lea ecx, [ebp - 8]
call fcn.00435d62
mov eax, dword [ebp + 8]
cmp word [eax], di
jne 0x46fa7e
add dword [ebp + 8], 2
push 1
push edi
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x50]
call fcn.0044212f
push esi
lea ecx, [ebp - 8]
push ecx
push eax
call fcn.004386e6
add esp, 0xc
push dword [ebp - 8]
call fcn.0040eec0
pop ecx
lea ecx, [ebp - 0x10]
mov esi, eax
call fcn.00435d62
mov edi, dword [ebp - 0x2c]
cmp word [edi], 0
je 0x46faba
cmp word [edi + 2], 0x3a
je 0x46faba
lea eax, [ebp - 0x10]
push eax
push edi
call fcn.0040f20d
pop ecx
pop ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x40]
call fcn.0044042b
mov edi, dword [eax]
cmp word [esi], 0
je 0x46fae0
cmp word [esi + 2], 0x3a
je 0x46fae0
lea eax, [ebp - 0x10]
push eax
push esi
call fcn.0040f20d
pop ecx
pop ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 8]
call fcn.0044042b
mov esi, dword [eax]
push 0x20
lea ecx, [ebp + 8]
call fcn.00435d80
mov eax, dword [ebp + 8]
and word [eax + 4], 0
push 0
push ebx
lea eax, [ebp + 8]
push eax
push esi
push edi
push dword [ebp - 0x20]
call fcn.00439cb5
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
add esp, 0x18
add eax, 4
push eax
push dword [ebp - 0x28]
call fcn.00435749
lea ecx, [ebp + 8]
call fcn.0043092f
lea ecx, [ebp - 0x10]
call fcn.0043092f
lea ecx, [ebp - 8]
call fcn.0043092f
xor esi, esi
jmp 0x46fe3e
and dword [ebp - 0x28], 0
cmp byte [ebp - 9], 0
jne 0x46fd31
cmp word [ebx], 0
je 0x46fd31
mov esi, dword [ebp - 0x1c]
cmp word [esi], 0x2a
jne 0x46fb78
push 0x105
lea ecx, [ebp - 0x1c]
call fcn.00435da9
mov esi, dword [ebp - 0x1c]
and word [esi], 0
push esi
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathW]
cmp dword [0x4ad074], 0
je 0x46fa0a
push dword [ebp - 0x2c]
call fcn.0047f62b
test eax, eax
pop ecx
jne 0x46fbae
push dword [ebp - 0x2c]
lea ecx, [ebp + 8]
call fcn.004403c3
push dword [ebp + 8]
call fcn.00419625
pop ecx
lea ecx, [ebp + 8]
call fcn.0043092f
push dword [ebp - 0x2c]
call fcn.0047f62b
test eax, eax
pop ecx
je 0x46fa0a
cmp byte [ebp - 1], 0
jne 0x46fbd4
push ebx
call fcn.0047f7b4
test eax, eax
pop ecx
je 0x46fa0a
and dword [ebp - 0x74], 0
push 8
pop ecx
xor eax, eax
lea edi, [ebp - 0x70]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x74]
push eax
push 0
push ebx
call dword [sym.imp.KERNEL32.DLL_GetFileAttributesExW]
test eax, eax
je 0x46fbf9
test byte [ebp - 0x74], 1
jne 0x46fc04
cmp word [esi], 0
je 0x46fc04
mov dword [ebp - 8], esi
jmp 0x46fc08
and dword [ebp - 8], 0
and dword [ebp + 8], 0
cmp byte [ebp - 1], 0
je 0x46fc29
cmp dword [ebp - 0x34], 0
jne 0x46fc1f
mov dword [ebp + 8], 0x100
cmp byte [ebp - 0x11], 0
je 0x46fc29
or byte [ebp + 9], 2
xor eax, eax
inc eax
cmp byte [ebp - 1], 0
je 0x46fc3e
lea eax, [ebp + 8]
push eax
push ebx
call fcn.00469c34
pop ecx
pop ecx
mov esi, dword [ebp - 0x10]
sar eax, 8
movzx edi, al
dec edi
cmp esi, 0x80000000
jne 0x46fc53
xor esi, esi
inc esi
push ebx
call fcn.0047f7b4
test eax, eax
pop ecx
je 0x46fcb6
cmp dword [ebp - 0x34], 0
je 0x46fc81
test esi, esi
jl 0x46fc6c
mov eax, esi
jmp 0x46fc6f
xor eax, eax
inc eax
push dword [ebp - 8]
push eax
push ebx
push dword [ebp - 0x2c]
call fcn.00439b3f
add esp, 0x10
jmp 0x46fc9a
test esi, esi
jl 0x46fc89
mov eax, esi
jmp 0x46fc8c
xor eax, eax
inc eax
push dword [ebp - 8]
push eax
push ebx
push dword [ebp - 0x2c]
call dword [0x4ad074]
mov esi, eax
push esi
push dword [ebp - 8]
push dword [ebp - 0x2c]
push ebx
push 0x49dc98
push dword [ebp - 0x20]
call fcn.0040cde2
add esp, 0x18
jmp 0x46fcb9
mov esi, dword [ebp - 0x28]
cmp byte [ebp - 1], 0
je 0x46fcd2
cmp byte [ebp - 0x11], 0
jne 0x46fcd2
mov eax, dword [ebp + 8]
test ax, ax
je 0x46fcd2
call fcn.0043221c
test edi, edi
jl 0x46fcfd
push edi
lea eax, [ebp - 0x13c]
push 0x49dc74
push eax
call dword [sym.imp.USER32.DLL_wsprintfW]
mov ecx, dword [ebp - 0x20]
add esp, 0xc
push 0
lea eax, [ebp - 0x134]
push eax
call fcn.0045269f
lea ecx, [ebp - 0x1c]
call fcn.0043092f
lea ecx, [ebp - 0x44]
call fcn.0043092f
lea ecx, [ebp - 0x40]
call fcn.0043092f
lea ecx, [ebp - 0x18]
call fcn.0043092f
lea ecx, [ebp - 0x50]
call fcn.0043092f
xor eax, eax
test esi, esi
sete al
jmp 0x46fe68
lea ecx, [ebp + 8]
call fcn.00435d62
mov edi, dword [ebp - 0x2c]
cmp word [edi], 0
je 0x46fd62
cmp word [edi + 2], 0x3a
je 0x46fd62
lea eax, [ebp + 8]
push eax
push edi
call fcn.0040f20d
pop ecx
pop ecx
push dword [ebp + 8]
lea ecx, [ebp - 0x40]
call fcn.0044042b
mov edi, dword [eax]
cmp word [ebx], 0
je 0x46fd88
cmp word [ebx + 2], 0x3a
je 0x46fd88
lea eax, [ebp + 8]
push eax
push ebx
call fcn.0040f20d
pop ecx
pop ecx
push dword [ebp + 8]
lea ecx, [ebp - 0x18]
call fcn.0044042b
mov ebx, dword [eax]
cmp word [edi], 0
jne 0x46fdbd
cmp word [ebx], 0
je 0x46fdb7
lea eax, [ebp - 0x554]
push eax
push esi
lea eax, [ebp + 8]
push eax
push ebx
push esi
push dword [ebp - 0x20]
call fcn.00439cb5
add esp, 0x18
test eax, eax
je 0x46fdd6
lea edi, [ebp - 0x34c]
cmp word [edi], 0
je 0x46fdd6
cmp dword [0x4ad078], 0
jne 0x46fdcb
xor esi, esi
inc esi
jmp 0x46fe36
push edi
call fcn.0047f62b
test eax, eax
pop ecx
jne 0x46fddd
mov esi, 0x80070057
jmp 0x46fe36
xor esi, esi
cmp word [ebx], si
jne 0x46fde6
xor ebx, ebx
cmp word [edi], si
mov ecx, edi
jne 0x46fdef
xor ecx, ecx
mov edx, dword [ebp - 0x10]
mov eax, 0x80000000
cmp edx, eax
jne 0x46fdfd
xor edx, edx
cmp dword [ebp - 0x34], esi
je 0x46fe16
xor eax, eax
cmp edx, esi
setne al
push eax
push edi
call fcn.004335fe
pop ecx
pop ecx
mov esi, eax
jmp 0x46fe36
cmp edx, eax
je 0x46fe23
cmp edx, esi
je 0x46fe23
xor eax, eax
inc eax
jmp 0x46fe25
xor eax, eax
push eax
push esi
push ebx
push ecx
call dword [0x4ad078]
mov esi, eax
neg esi
sbb esi, esi
inc esi
lea ecx, [ebp + 8]
call fcn.0043092f
lea ecx, [ebp - 0x1c]
call fcn.0043092f
lea ecx, [ebp - 0x44]
call fcn.0043092f
lea ecx, [ebp - 0x40]
call fcn.0043092f
lea ecx, [ebp - 0x18]
call fcn.0043092f
lea ecx, [ebp - 0x50]
call fcn.0043092f
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret 8