Function at 0x4043c0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41cdf4
mov eax, dword fs:[0]
push eax
sub esp, 0x290
mov eax, dword [0x426168]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x274], eax
mov dword [ebp - 0x288], ecx
call dword [0x426068]
xor ebx, ebx
mov dword [ebp - 0x260], ebx
lea edx, [ebp - 0x260]
push edx
push 1
push ebx
mov dword [ebp - 4], ebx
call dword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov eax, dword [ebp - 0x260]
lea edx, [ebp - 0x278]
push edx
push 2
lea edx, [ebp - 0x26c]
mov dword [ebp - 0x278], ebx
mov byte [ebp - 0x26c], 0xff
mov byte [ebp - 0x26b], 0xfe
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x10]
call eax
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov ecx, dword [ebp - 0x260]
cmp ecx, ebx
jne 0x404475
mov eax, 0x80070057
jmp 0x404497
mov edx, dword [ecx]
lea eax, [ebp - 0x278]
push eax
push 0x52
push str.__xml_version_1.0__encoding_utf_16____r_n
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x278], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404e84
cmp ecx, ebx
jne 0x4044ac
mov eax, 0x80070057
jmp 0x4044ce
mov edx, dword [ecx]
lea eax, [ebp - 0x278]
push eax
push 0x12
push str._request
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x278], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404e84
mov edx, dword [ebp - 0x274]
mov eax, dword [edx + 0xcb4]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
jbe 0x40456c
mov esi, dword [ebp - 0x260]
mov edx, str.url_
call fcn.004042a0
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov dword [ebp - 0x268], ebx
mov ecx, dword [ebp - 0x274]
lea edx, [ebp - 0x268]
mov byte [ebp - 4], 1
mov ebx, dword [ecx + 0xcb4]
push edx
call fcn.00404020
mov ebx, dword [ebp - 0x268]
mov esi, dword [ebp - 0x260]
add esp, 4
mov edx, ebx
call fcn.004042a0
push ebx
mov esi, eax
mov byte [ebp - 4], 0
call edi
test esi, esi
jl 0x404e7c
mov esi, dword [ebp - 0x260]
mov edx, 0x420fd4
call fcn.004042a0
mov esi, eax
xor ebx, ebx
cmp esi, ebx
jl 0x404e7e
mov eax, dword [ebp - 0x274]
mov ecx, dword [eax + 0xcb8]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jbe 0x404602
mov esi, dword [ebp - 0x260]
mov edx, str.dataClassId_
call fcn.004042a0
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov dword [ebp - 0x268], ebx
mov edx, dword [ebp - 0x274]
lea eax, [ebp - 0x268]
mov byte [ebp - 4], 2
mov ebx, dword [edx + 0xcb8]
push eax
call fcn.00404020
mov ebx, dword [ebp - 0x268]
mov esi, dword [ebp - 0x260]
add esp, 4
mov edx, ebx
call fcn.004042a0
push ebx
mov esi, eax
mov byte [ebp - 4], 0
call edi
test esi, esi
jl 0x404e7c
mov esi, dword [ebp - 0x260]
mov edx, 0x420fd4
call fcn.004042a0
mov esi, eax
xor ebx, ebx
cmp esi, ebx
jl 0x404e7e
mov ecx, dword [ebp - 0x260]
cmp ecx, ebx
jne 0x40461b
mov eax, 0x80070057
jmp 0x40463d
mov edx, dword [ecx]
lea eax, [ebp - 0x278]
push eax
push 0x10
push str.method_
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x278], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404e84
push 0x3e
lea edx, [ebp - 0x52]
push ebx
push edx
mov word [ebp - 0x54], bx
call fcn.0040e580
mov edi, dword [ebp - 0x274]
mov ecx, dword [edi + 0xcbc]
add esp, 0xc
push 0xa
lea eax, [ebp - 0x54]
push eax
push ecx
call fcn.0040e0d9
mov esi, dword [ebp - 0x260]
add esp, 0xc
lea edx, [ebp - 0x54]
call fcn.004042a0
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov esi, dword [ebp - 0x260]
mov edx, 0x42100c
call fcn.004042a0
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov eax, dword [edi + 0xca8]
cmp eax, ebx
mov esi, dword [ebp - 0x260]
mov dword [ebp - 0x278], eax
jne 0x4046d2
mov edx, str._parameters___
call fcn.004042a0
mov ecx, dword [ebp - 0x260]
jmp 0x404954
mov edx, str._parameters_
call fcn.004042a0
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x280], ebx
jl 0x404e7e
mov eax, dword [ebp - 0x280]
cmp eax, dword [ebp - 0x278]
jge 0x404913
mov dword [ebp - 0x26c], ebx
mov dword [ebp - 0x270], ebx
lea edx, [ebp - 0x270]
push edx
lea ecx, [ebp - 0x26c]
push ecx
mov ecx, dword [ebp - 0x274]
mov byte [ebp - 4], 4
call fcn.00403de0
mov edx, dword [ebp - 0x270]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov edi, dword [ebp - 0x26c]
test eax, eax
mov eax, dword [ebp - 0x260]
mov esi, eax
jne 0x4047bc
cmp eax, ebx
je 0x40474e
cmp edi, ebx
jne 0x40475a
mov eax, 0x80070057
mov esi, eax
jmp 0x4048e4
mov ecx, dword [eax]
lea edx, [ebp - 0x268]
push edx
push 2
push 0x420f4c
push eax
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x268], ebx
call eax
cmp eax, ebx
jl 0x4047b5
mov eax, edi
mov dword [ebp - 0x264], ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x404785
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x10]
sub eax, edx
sar eax, 1
lea edx, [ebp - 0x264]
push edx
add eax, eax
push eax
push edi
push esi
call ecx
cmp eax, ebx
jl 0x4047b5
mov edx, 0x420f50
call fcn.004042a0
mov esi, eax
jmp 0x4048e4
cmp eax, ebx
je 0x4047c4
cmp edi, ebx
jne 0x4047cb
mov eax, 0x80070057
jmp 0x404826
mov edx, dword [eax]
mov edx, dword [edx + 0x10]
lea ecx, [ebp - 0x264]
push ecx
push 2
push 0x420f4c
push eax
mov dword [ebp - 0x264], ebx
call edx
cmp eax, ebx
jl 0x404826
mov eax, edi
mov dword [ebp - 0x268], ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4047f6
mov ecx, dword [esi]
mov ecx, dword [ecx + 0x10]
sub eax, edx
sar eax, 1
lea edx, [ebp - 0x268]
push edx
add eax, eax
push eax
push edi
push esi
call ecx
cmp eax, ebx
jl 0x404826
mov edx, 0x420f58
call fcn.004042a0
cmp eax, ebx
mov esi, eax
jl 0x4048e4
mov dword [ebp - 0x268], ebx
lea edx, [ebp - 0x268]
mov byte [ebp - 4], 5
mov ebx, dword [ebp - 0x270]
push edx
call fcn.00404020
mov ebx, dword [ebp - 0x268]
mov esi, dword [ebp - 0x260]
add esp, 4
mov edx, ebx
call fcn.004042a0
push ebx
mov esi, eax
mov byte [ebp - 4], 4
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test esi, esi
jl 0x4048e2
mov esi, dword [ebp - 0x260]
test esi, esi
mov edi, dword [ebp - 0x26c]
mov ebx, esi
je 0x404889
test edi, edi
jne 0x404890
mov eax, 0x80070057
jmp 0x4048e0
mov edx, 0x420f44
call fcn.004042a0
test eax, eax
jl 0x4048e0
mov eax, edi
mov dword [ebp - 0x264], 0
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4048b0
mov ecx, dword [ebx]
mov ecx, dword [ecx + 0x10]
sub eax, edx
sar eax, 1
lea edx, [ebp - 0x264]
push edx
add eax, eax
push eax
push edi
push ebx
call ecx
test eax, eax
jl 0x4048e0
mov edx, 0x420f58
call fcn.004042a0
mov esi, eax
xor ebx, ebx
mov edx, dword [ebp - 0x270]
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edx
call edi
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x26c]
push eax
call edi
add dword [ebp - 0x280], 1
cmp esi, ebx
jge 0x4046ec
jmp 0x404e7e
cmp esi, ebx
jl 0x404e7e
mov ecx, dword [ebp - 0x260]
cmp ecx, ebx
jne 0x40492c
mov eax, 0x80070057
jmp 0x40494e
mov edx, dword [ecx]
lea eax, [ebp - 0x264]
push eax
push 0x1a
push str.__parameters_
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x264], ebx
call ecx
mov ecx, dword [ebp - 0x260]
mov edi, dword [ebp - 0x274]
mov esi, eax
cmp esi, ebx
jl 0x404e84
mov eax, dword [edi + 0xcac]
cmp eax, ebx
mov dword [ebp - 0x284], eax
jne 0x404995
cmp ecx, ebx
jne 0x40497c
mov eax, 0x80070057
jmp 0x404d57
lea eax, [ebp - 0x264]
push eax
push 0x12
mov dword [ebp - 0x264], ebx
push str._files___
jmp 0x404d49
cmp ecx, ebx
jne 0x4049a0
mov eax, 0x80070057
jmp 0x4049c2
mov edx, dword [ecx]
lea eax, [ebp - 0x264]
push eax
push 0xe
push str._files_
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x264], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
mov dword [ebp - 0x270], ebx
jl 0x404e84
mov edx, dword [ebp - 0x270]
cmp edx, dword [ebp - 0x284]
jge 0x404d22
mov dword [ebp - 0x26c], ebx
mov dword [ebp - 0x268], ebx
lea eax, [ebp - 0x29c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
lea ecx, [ebp - 0x278]
push ecx
lea edx, [ebp - 0x29c]
push edx
lea eax, [ebp - 0x268]
push eax
lea ecx, [ebp - 0x26c]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x270]
push ecx
mov ecx, dword [ebp - 0x274]
mov dword [ebp - 0x278], ebx
call fcn.00403e90
mov edi, dword [ebp - 0x26c]
mov esi, eax
cmp esi, ebx
jl 0x404cda
mov ecx, dword [ebp - 0x260]
cmp ecx, ebx
jne 0x404a55
mov eax, 0x80070057
jmp 0x404a77
mov edx, dword [ecx]
lea eax, [ebp - 0x264]
push eax
push 2
push 0x420f4c
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x264], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404cda
cmp ecx, ebx
je 0x404a89
cmp edi, ebx
jne 0x404a90
mov eax, 0x80070057
jmp 0x404ac8
mov eax, edi
mov dword [ebp - 0x264], ebx
lea esi, [eax + 2]
jmp 0x404aa0
mov dx, word [eax]
add eax, 2
cmp dx, bx
jne 0x404aa0
mov edx, dword [ecx]
sub eax, esi
sar eax, 1
lea esi, [ebp - 0x264]
push esi
add eax, eax
push eax
push edi
push ecx
mov ecx, dword [edx + 0x10]
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404cda
xor edi, edi
mov dword [ebp - 0x280], edi
mov byte [ebp - 4], 9
cmp word [ebp - 0x278], bx
je 0x404bbe
cmp ecx, ebx
jne 0x404af6
mov eax, 0x80070057
jmp 0x404b12
mov edx, dword [ecx]
lea eax, [ebp - 0x264]
push eax
push 0x2c
push str._temporaryFile_true__
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x264], ebx
call ecx
cmp eax, ebx
mov esi, eax
jl 0x404c56
push 0x206
lea edx, [ebp - 0x25a]
push ebx
push edx
mov word [ebp - 0x25c], bx
call fcn.0040e580
add esp, 0xc
lea eax, [ebp - 0x25c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea ecx, [ebp - 0x25c]
push ecx
push ebx
push 0x4210c0
mov edx, ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
mov eax, dword [ebp - 0x294]
push eax
lea eax, [ebp - 0x25c]
call fcn.004042f0
mov esi, eax
add esp, 4
cmp esi, ebx
jl 0x404c56
lea ecx, [ebp - 0x25c]
push ecx
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, eax
cmp esi, ebx
mov dword [ebp - 0x264], esi
je 0x404d18
lea edx, [ebp - 0x280]
push edx
mov ebx, esi
mov byte [ebp - 4], 0xa
call fcn.00404020
add esp, 4
push esi
mov byte [ebp - 4], 9
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x404c00
cmp ecx, ebx
jne 0x404bc9
mov eax, 0x80070057
jmp 0x404be5
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
lea edx, [ebp - 0x264]
push edx
push 0x2e
push str._temporaryFile_false__
push ecx
mov dword [ebp - 0x264], ebx
call eax
cmp eax, ebx
mov esi, eax
jl 0x404c56
mov ebx, dword [ebp - 0x268]
lea ecx, [ebp - 0x280]
push ecx
call fcn.00404020
add esp, 4
mov edx, dword [ebp - 0x260]
test edx, edx
mov edi, dword [ebp - 0x280]
je 0x404c14
test edi, edi
jne 0x404c1b
mov eax, 0x80070057
jmp 0x404c52
mov eax, edi
mov dword [ebp - 0x264], 0
lea esi, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x404c30
mov ecx, dword [edx]
mov ecx, dword [ecx + 0x10]
sub eax, esi
sar eax, 1
lea esi, [ebp - 0x264]
push esi
add eax, eax
push eax
push edi
push edx
call ecx
mov esi, eax
xor ebx, ebx
push edi
mov byte [ebp - 4], 8
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp esi, ebx
jl 0x404cd4
mov esi, dword [ebp - 0x260]
cmp esi, ebx
mov edi, esi
je 0x404c79
cmp dword [ebp - 0x26c], ebx
jne 0x404c80
mov eax, 0x80070057
jmp 0x404cd2
mov edx, 0x420f44
call fcn.004042a0
cmp eax, ebx
jl 0x404cd2
mov esi, dword [ebp - 0x26c]
mov eax, esi
mov dword [ebp - 0x264], ebx
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x404ca0
sub eax, edx
mov edx, dword [edi]
sar eax, 1
lea ecx, [ebp - 0x264]
push ecx
mov ecx, dword [edx + 0x10]
add eax, eax
push eax
push esi
push edi
call ecx
cmp eax, ebx
jl 0x404cd2
mov edx, 0x420f58
mov esi, edi
call fcn.004042a0
mov esi, eax
mov edi, dword [ebp - 0x26c]
lea edx, [ebp - 0x29c]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x268]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edi
mov byte [ebp - 4], bl
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
add dword [ebp - 0x270], 1
cmp esi, ebx
mov ecx, dword [ebp - 0x260]
jge 0x4049d2
jmp 0x404e84
push 0x8007000e
call fcn.00401000
cmp esi, ebx
jl 0x404e84
cmp ecx, ebx
jne 0x404d35
mov eax, 0x80070057
jmp 0x404d57
lea eax, [ebp - 0x284]
push eax
push 0x10
mov dword [ebp - 0x284], ebx
push str.__files_
mov edx, dword [ecx]
push ecx
mov ecx, dword [edx + 0x10]
call ecx
mov ecx, dword [ebp - 0x260]
mov esi, eax
cmp esi, ebx
jl 0x404e84
cmp ecx, ebx
jne 0x404d6c
mov eax, 0x80070057
jmp 0x404d8e
mov edx, dword [ecx]
lea eax, [ebp - 0x284]
push eax
push 0x14
push str.__request_
push ecx
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x284], ebx
call ecx
mov ecx, dword [ebp - 0x260]
cmp eax, ebx
mov esi, eax
jl 0x404e84
lea edx, [ebp - 0x270]
push edx
push ecx
mov dword [ebp - 0x270], ebx
call dword [sym.imp.ole32.dll_GetHGlobalFromStream]
mov esi, eax
cmp esi, ebx
jl 0x404e7e
mov eax, dword [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalSize]
mov ecx, dword [ebp - 0x270]
push ecx
mov dword [ebp - 0x284], eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
cmp eax, ebx
mov dword [ebp - 0x264], eax
je 0x404e5a
lea ecx, [ebp - 0x27c]
call fcn.00408c90
push ebx
lea ecx, [ebp - 0x27c]
mov byte [ebp - 4], 0xb
call fcn.0040a3a0
mov esi, eax
cmp esi, ebx
jl 0x404e3d
mov esi, dword [ebp - 0x288]
push esi
call fcn.00404fd0
mov edx, dword [ebp - 0x284]
mov edi, eax
mov eax, dword [ebp - 0x264]
push edx
push eax
push esi
lea ecx, [ebp - 0x27c]
call fcn.0040a2c0
cmp edi, ebx
mov esi, eax
je 0x404e3d
push edi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [ebp - 0x270]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
lea ecx, [ebp - 0x27c]
mov byte [ebp - 4], bl
call fcn.004097e0
jmp 0x404e7e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, ebx
mov ecx, dword [ebp - 0x260]
jg 0x404e6e
mov esi, eax
jmp 0x404e84
and eax, 0xffff
or eax, 0x80070000
mov esi, eax
jmp 0x404e84
xor ebx, ebx
mov ecx, dword [ebp - 0x260]
cmp ecx, ebx
mov dword [ebp - 4], 0xffffffff
je 0x404e97
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push ecx
call eax
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0040d2aa
mov esp, ebp
pop ebp
ret 4