Function at 0x405cb0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56c1ef
mov eax, dword fs:[0]
push eax
sub esp, 0x488
mov eax, dword [0x5cefd4]
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 edi, ecx
cmp byte [edi + 0x104], 0
mov dword [edi + 0xf0], 0
je 0x405d46
mov eax, dword [edi + 0xf8]
mov dword [edi + 0x108], 0
mov dword [edi + 0x100], 0
test eax, eax
je 0x405d24
push eax
call fcn.0055028e
add esp, 4
mov dword [edi + 0xf8], 0
push 0x30
push 0x5adbe4
push 0x5adcac
mov ecx, edi
mov dword [edi + 0xf0], 0x14
call fcn.00415e66
jmp 0x4065e6
cmp dword [edi + 0xf8], 0
jne 0x406405
push 0x7f02
push 0
call dword [sym.imp.USER32.dll_LoadCursorW]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
lea eax, [ebp - 0x46c]
mov dword [ebp - 0x470], eax
call fcn.0040879e
mov ecx, eax
test ecx, ecx
je 0x406602
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x46c], eax
push 0x5adce8
lea ecx, [ebp - 0x46c]
mov dword [ebp - 4], 0
call fcn.00403830
test al, al
jne 0x405dbd
push 0x15
push 0x5adce8
lea ecx, [ebp - 0x46c]
call fcn.00403c90
mov dword [ebp - 4], 1
mov ecx, dword [edi + 0xd4]
test ecx, ecx
je 0x405dd9
push dword [ebp - 0x46c]
call fcn.00413166
mov dword [ebp - 4], 0xffffffff
or ebx, 0xffffffff
mov edx, dword [ebp - 0x46c]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x405e00
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi + 0x10c]
lea esi, [eax - 0x10]
mov dword [ebp - 0x48c], eax
push ecx
mov ecx, dword [esi]
mov dword [ebp - 0x478], esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
mov edx, eax
lea eax, [esi + 0xc]
jl 0x405e31
cmp edx, dword [esi]
jne 0x405e31
lock inc dword [eax]
jmp 0x405e70
mov eax, dword [edx]
lea ecx, [esi + 4]
push 2
push dword [ecx]
mov dword [ebp - 0x480], ecx
mov ecx, edx
call dword [eax]
mov esi, eax
test esi, esi
je 0x40660c
mov ecx, dword [ebp - 0x480]
mov eax, dword [ecx]
mov dword [esi + 4], eax
mov eax, dword [ecx]
inc eax
push eax
push dword [ebp - 0x48c]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.00403f00
add esp, 0x10
mov ecx, dword [ebp - 0x478]
lea eax, [esi + 0x10]
mov dword [ecx], eax
lea ecx, [edi + 0xf4]
call fcn.00401d20
call fcn.0040879e
mov ecx, eax
test ecx, ecx
je 0x406611
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x490], eax
push str.setup.dat
lea ecx, [ebp - 0x490]
mov dword [ebp - 4], 2
call fcn.00403830
test al, al
jne 0x405ed0
push 9
push str.setup.dat
lea ecx, [ebp - 0x490]
call fcn.00403c90
mov dword [ebp - 4], 3
call fcn.0040879e
mov ecx, eax
test ecx, ecx
je 0x40661b
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x488], eax
push 0x5ad84c
lea ecx, [ebp - 0x488]
mov byte [ebp - 4], 4
call fcn.00403830
test al, al
jne 0x405f1e
push 0
push 0x5ad84c
lea ecx, [ebp - 0x488]
call fcn.00403c90
push str.1.0.32.06
lea ecx, [ebp - 0x488]
mov byte [ebp - 4], 5
call fcn.00402f70
mov esi, dword [ebp - 0x488]
add esi, 0xfffffff0
push ecx
mov dword [ebp - 0x484], esp
mov dword [ebp - 0x478], esp
mov ecx, dword [esi]
mov dword [ebp - 0x48c], esi
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
mov ecx, eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x47c], eax
jl 0x405f6f
cmp ecx, dword [esi]
jne 0x405f6f
lock inc dword [eax]
jmp 0x405faa
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x480], edx
test edx, edx
je 0x406625
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
lea eax, [esi + 0x10]
mov ecx, dword [esi + 4]
inc ecx
push ecx
push eax
push ecx
lea eax, [edx + 0x10]
push eax
call fcn.00403f00
mov esi, dword [ebp - 0x480]
add esp, 0x10
mov ecx, dword [ebp - 0x478]
lea eax, [esi + 0x10]
mov dword [ecx], eax
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x490]
add esi, 0xfffffff0
push ecx
mov dword [ebp - 0x474], esp
mov dword [ebp - 0x480], esi
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
mov ecx, eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x470], eax
jl 0x405ff0
cmp ecx, dword [esi]
jne 0x405ff0
lock inc dword [eax]
jmp 0x40602b
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x478], edx
test edx, edx
je 0x40662a
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
lea eax, [esi + 0x10]
mov ecx, dword [esi + 4]
inc ecx
push ecx
push eax
push ecx
lea eax, [edx + 0x10]
push eax
call fcn.00403f00
mov esi, dword [ebp - 0x478]
add esp, 0x10
mov ecx, dword [ebp - 0x474]
lea eax, [esi + 0x10]
mov dword [ecx], eax
lea ecx, [edi + 0xf4]
mov byte [ebp - 4], 5
call fcn.00402240
call fcn.0040879e
mov ecx, eax
test ecx, ecx
je 0x40662f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x46c], eax
push str.jsreader.part
lea ecx, [ebp - 0x46c]
mov byte [ebp - 4], 7
call fcn.00403830
test al, al
jne 0x40608c
push 0xd
push str.jsreader.part
lea ecx, [ebp - 0x46c]
call fcn.00403c90
push str.DATA
mov byte [ebp - 4], 8
push 0x86
push ecx
mov dword [ebp - 0x494], esp
mov esi, dword [ebp - 0x46c]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x478], eax
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov dword [ebp - 0x474], eax
mov dword [ebp - 0x484], edx
jl 0x4060da
cmp eax, dword [esi - 0x10]
jne 0x4060da
lea eax, [esi - 0x10]
lock inc dword [edx]
jmp 0x40611e
mov eax, dword [eax]
mov ecx, dword [ebp - 0x474]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ecx, eax
mov dword [ebp - 0x474], ecx
test ecx, ecx
je 0x406639
mov eax, dword [esi - 0xc]
mov dword [ecx + 4], eax
mov ecx, dword [esi - 0xc]
mov eax, dword [ebp - 0x474]
inc ecx
push ecx
push esi
push ecx
add eax, 0x10
push eax
call fcn.00403f00
mov eax, dword [ebp - 0x474]
add esp, 0x10
mov ecx, dword [ebp - 0x494]
add eax, 0x10
mov dword [ecx], eax
lea ecx, [edi + 0xf4]
call fcn.004020d0
test al, al
jne 0x4061cc
push 0x30
push 0x5adbe4
push 0x5add60
mov ecx, edi
mov dword [edi + 0xf0], 0x14
call fcn.00415e66
mov byte [ebp - 4], 5
mov eax, ebx
mov ecx, dword [ebp - 0x484]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x40617c
mov edx, dword [ebp - 0x478]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov eax, ebx
mov ecx, dword [ebp - 0x47c]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x40619f
mov edx, dword [ebp - 0x48c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x470]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x4065e6
mov edx, dword [ebp - 0x480]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4065e6
lea eax, [ebp - 0x46c]
push eax
lea eax, [edi + 0x10c]
push eax
lea eax, [ebp - 0x47c]
push eax
call fcn.00402d50
add esp, 0xc
mov byte [ebp - 4], 9
lea edx, [esi - 0x10]
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
mov dword [ebp - 0x470], eax
cmp eax, edx
je 0x406261
mov esi, dword [ebp - 0x478]
cmp dword [esi + 0xc], 0
jl 0x40624c
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x40624c
push dword [ebp - 0x470]
call fcn.00403e90
add esp, 4
mov dword [ebp - 0x470], eax
mov ecx, ebx
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406241
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x470]
lea esi, [eax + 0x10]
mov dword [ebp - 0x46c], esi
jmp 0x406261
push dword [ecx - 0xc]
push ecx
lea ecx, [ebp - 0x46c]
call fcn.00403c90
mov esi, dword [ebp - 0x46c]
mov byte [ebp - 4], 8
mov eax, ebx
mov edx, dword [ebp - 0x47c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x406282
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
add esi, 0xfffffff0
mov dword [ebp - 0x47c], esp
mov dword [ebp - 0x494], esp
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x4062af
cmp ecx, dword [esi]
jne 0x4062af
mov eax, esi
lock inc dword [edx]
jmp 0x4062ea
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [ebp - 0x470], edx
test edx, edx
je 0x40663e
mov eax, dword [esi + 4]
mov dword [edx + 4], eax
lea eax, [esi + 0x10]
mov ecx, dword [esi + 4]
inc ecx
push ecx
push eax
push ecx
lea eax, [edx + 0x10]
push eax
call fcn.00403f00
mov eax, dword [ebp - 0x470]
add esp, 0x10
mov ecx, dword [ebp - 0x47c]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 0xa
push ecx
mov dword [ebp - 0x484], esp
mov eax, dword [edi + 0x10c]
mov dword [ebp - 0x47c], eax
lea ecx, [eax - 0x10]
mov dword [ebp - 0x474], ecx
mov ecx, dword [ecx]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov edx, eax
mov eax, dword [ebp - 0x474]
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jl 0x406336
cmp edx, dword [eax]
jne 0x406336
lock inc dword [ecx]
jmp 0x406381
lea ecx, [eax + 4]
mov eax, dword [edx]
push 2
push dword [ecx]
mov dword [ebp - 0x470], ecx
mov ecx, edx
call dword [eax]
mov ecx, eax
mov dword [ebp - 0x474], ecx
test ecx, ecx
je 0x406643
mov edx, dword [ebp - 0x470]
mov eax, dword [edx]
mov dword [ecx + 4], eax
mov eax, dword [edx]
inc eax
push eax
push dword [ebp - 0x47c]
push eax
lea eax, [ecx + 0x10]
push eax
call fcn.00403f00
mov eax, dword [ebp - 0x474]
add esp, 0x10
mov edx, dword [ebp - 0x484]
lea ecx, [edi + 0xf4]
add eax, 0x10
mov dword [edx], eax
mov byte [ebp - 4], 8
call fcn.00401f20
mov dword [edi + 0xf0], 1
lea ecx, [esi + 0xc]
mov byte [ebp - 4], 5
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4063bf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x48c]
mov eax, ebx
mov byte [ebp - 4], 3
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4063dd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x480]
mov dword [ebp - 4], 0xffffffff
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4065e6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4065e6
mov ecx, dword [edi + 0x100]
test ecx, ecx
jle 0x40647d
mov esi, dword [edi + 0xd8]
test esi, esi
je 0x406463
cmp ecx, 1
jge 0x406425
mov eax, 0xff
jmp 0x406452
mov edx, dword [edi + 0x108]
cmp edx, 1
jl 0x40641e
mov eax, edx
movd xmm0, edx
sub eax, ecx
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mulss xmm1, dword [0x5b0898]
divss xmm1, xmm0
cvttss2si eax, xmm1
push 0
push eax
push 0x402
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageW]
lea ecx, [edi + 0xf4]
call fcn.00402840
mov dword [edi + 0xf0], 1
jmp 0x4065e6
mov eax, dword [edi + 0xf8]
mov dword [edi + 0x108], 0
mov dword [edi + 0x100], 0
test eax, eax
je 0x4064ae
push eax
call fcn.0055028e
add esp, 4
mov dword [edi + 0xf8], 0
push 0x40
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x4065dc
cmp eax, 0x41
jg 0x4065dc
call fcn.0040879e
mov ecx, eax
test ecx, ecx
je 0x406648
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x46c], eax
lea eax, [ebp - 0x218]
mov dword [ebp - 4], 0xb
push eax
lea ecx, [ebp - 0x46c]
call fcn.00403830
test al, al
jne 0x406533
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406511
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x46c]
call fcn.00403c90
mov dword [ebp - 4], 0xc
mov eax, dword [ebp - 0x46c]
mov edx, dword [eax - 0xc]
lea ecx, [edx - 1]
test ecx, ecx
js 0x406652
cmp ecx, edx
jg 0x406652
cmp word [eax + ecx*2], 0x5c
je 0x40656f
push 1
push 0x5ad850
lea ecx, [ebp - 0x46c]
call fcn.00403de0
push 0x11
push str.WindowsCodecs.dll
lea ecx, [ebp - 0x46c]
call fcn.00403de0
mov esi, dword [ebp - 0x46c]
lea eax, [ebp - 0x468]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
push eax
setne bl
call dword [sym.imp.KERNEL32.dll_FindClose]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4065c1
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x4065dc
call fcn.00404730
movzx eax, al
neg eax
sbb eax, eax
add eax, 8
mov dword [edi + 0xf0], eax
jmp 0x4065e6
mov dword [edi + 0xf0], 2
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.0054aef3
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00404240
call fcn.00404010
push 0x80004005
call fcn.00404240
push 0x80004005
call fcn.00404240
call fcn.00404010
call fcn.00404010
push 0x80004005
call fcn.00404240
call fcn.00404010
call fcn.00404010
call fcn.00404010
push 0x80004005
call fcn.00404240
push 0x80070057
call fcn.00404240
int3