Function at 0x4505e0
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x496219
mov eax, dword fs:[0]
push eax
sub esp, 0x454
mov eax, dword [0x4bea30]
xor eax, esp
mov dword [esp + 0x450], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4bea30]
xor eax, esp
push eax
lea eax, [esp + 0x468]
mov dword fs:[0], eax
push str.CreateBundlePackageDownloadInfo
xor ebp, ebp
push 0x4ab404
mov esi, ecx
mov edi, edx
mov dword [esp + 0x20], ebp
call fcn.0042af10
add esp, 8
push esi
mov ecx, edi
xor ebx, ebx
call fcn.004502a0
test eax, eax
je 0x4509be
mov eax, dword [esi + 0x40]
push str.Download
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebp
mov dword [esp + 0x1c], eax
je 0x4509be
call fcn.0045525d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x45067e
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0x470], ebp
call fcn.0045525d
xor ecx, ecx
cmp eax, ebp
setne cl
cmp ecx, ebp
jne 0x4506af
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
mov ebx, 1
mov byte [esp + 0x470], bl
mov edx, dword [edi]
mov edx, dword [edx + 0x28]
lea eax, [esp + 0x24]
push eax
push 4
mov ecx, edi
call edx
mov eax, dword [edi]
mov edx, dword [eax + 0x28]
lea ecx, [esp + 0x2c]
push ecx
push 5
mov ecx, edi
call edx
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
push ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], 0x4a77b8
call fcn.00430640
mov edx, dword [esi + 8]
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], ebp
mov word [esp + 0x68], bp
mov eax, dword [edx + 0x2c]
add esp, 4
push eax
lea ecx, [esp + 0x24]
call fcn.00404740
lea eax, [esp + 0x20]
push eax
mov ebx, str._html
mov byte [esp + 0x474], 2
call fcn.004339c0
mov ecx, dword [esp + 0x24]
add esp, 4
push ecx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
je 0x45075c
lea eax, [esp + 0x20]
jmp 0x45077c
mov edx, dword [esi + 8]
mov eax, dword [edx + 0x2c]
push eax
lea ecx, [esp + 0x34]
call fcn.00404740
mov byte [esp + 0x470], 3
mov dword [esp + 0x18], 1
mov ebx, dword [eax]
mov ecx, 0x49fc50
call fcn.00429460
mov esi, eax
test esi, esi
jge 0x4507a0
mov ecx, ebx
call fcn.004293f0
mov esi, eax
neg esi
sbb esi, esi
neg esi
add esi, 0xe
mov dword [esp + 0x470], 2
test byte [esp + 0x18], 1
je 0x4507d2
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4507d2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetTempPathW]
shl esi, 4
mov ecx, dword [esi + 0x49fc54]
push 0
lea edx, [esp + 0x50]
push 0
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], 1
mov dword [esp + 0x44], edx
call ebx
mov esi, eax
mov eax, str.EPSON
call fcn.004354e0
lea esi, [esi + eax + 2]
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00455056
add esp, 4
mov ebp, eax
push ebp
push esi
call ebx
push str.EPSON
mov eax, ebp
call fcn.00430470
xor esi, esi
add esp, 4
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
call fcn.0045525d
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x450863
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x470], 4
call fcn.0045525d
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x450895
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x38]
push edx
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x30]
mov byte [esp + 0x478], 5
call fcn.00450a00
cmp eax, esi
mov dword [esp + 0x1c], eax
je 0x4508e6
mov esi, dword [esp + 0x18]
or dword [edi + 0xc], 0x10
mov ebx, edi
call fcn.00439d30
mov esi, dword [esp + 0x28]
mov eax, edi
call fcn.0041ece0
push ebp
call fcn.0045505b
mov byte [esp + 0x474], 4
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450917
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x470], 2
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45093f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x470], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x450967
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x470], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45098f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x470], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4509ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x1c]
push ebx
mov edi, str.CreateBundlePackageDownloadInfo
mov ecx, 0x4ab404
call fcn.0042b400
add esp, 4
mov eax, ebx
mov ecx, dword [esp + 0x468]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x450]
xor ecx, esp
call fcn.0047a105
add esp, 0x460
ret