Function at 0x180020570
Capabilities:
Get common file path

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x2e0
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rsp + 0x330], rbx
mov rax, qword [0x18005a960]
xor rax, rsp
mov qword [rsp + 0x2d0], rax
mov r15, rdx
mov r13, rcx
call qword [0x18005a778]
xor edi, edi
mov qword [rsp + 0x30], rdi
lea r8, [rsp + 0x30]
lea edx, [rdi + 1]
xor ecx, ecx
call qword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
mov ebp, eax
test eax, eax
js 0x180020ca7
mov dword [rsp + 0x38], edi
mov byte [rsp + 0x40], 0xff
mov byte [rsp + 0x41], 0xfe
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea r9, [rsp + 0x38]
lea r8d, [rdi + 2]
lea rdx, [rsp + 0x40]
call qword [rax + 0x20]
mov ebp, eax
test eax, eax
js 0x180020ca7
lea rdx, str.__xml_version_1.0__encoding_utf_16____r_n
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
lea rdx, str._request
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
mov rcx, qword [r13 + 0xd08]
call qword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x1800206b4
lea rdx, str.url_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
mov qword [rsp + 0x38], rdi
lea rdx, [rsp + 0x38]
mov rcx, qword [r13 + 0xd08]
call fcn.18001fec0
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test ebp, ebp
js 0x180020ca7
lea rdx, [0x1800467bc]
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test ebp, ebp
js 0x180020ca7
mov rcx, qword [r13 + 0xd10]
call qword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
je 0x180020736
lea rdx, str.dataClassId_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
mov qword [rsp + 0x38], rdi
lea rdx, [rsp + 0x38]
mov rcx, qword [r13 + 0xd10]
call fcn.18001fec0
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test ebp, ebp
js 0x180020ca7
lea rdx, [0x1800467bc]
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test ebp, ebp
js 0x180020ca7
lea rdx, str.method_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
mov word [rsp + 0x80], 0
xor eax, eax
mov qword [rsp + 0x82], rax
mov qword [rsp + 0x8a], rax
mov qword [rsp + 0x92], rax
mov qword [rsp + 0x9a], rax
mov qword [rsp + 0xa2], rax
mov qword [rsp + 0xaa], rax
mov qword [rsp + 0xb2], rax
mov dword [rsp + 0xba], eax
mov word [rsp + 0xbe], ax
lea r8d, [rax + 0xa]
lea rdx, [rsp + 0x80]
mov ecx, dword [r13 + 0xd18]
call fcn.180028cc0
lea rdx, [rsp + 0x80]
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
lea rdx, [0x180046780]
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
xor ebx, ebx
mov dword [rsp + 0x40], ebx
lea rdx, [rsp + 0x40]
mov rcx, r13
call fcn.1800200d0
mov esi, dword [rsp + 0x40]
test esi, esi
jne 0x18002082e
lea rdx, str._parameters___
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
jmp 0x18002094e
lea rdx, str._parameters_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov edi, ebx
test eax, eax
js 0x180020ca7
nop
nop
cmp edi, esi
jge 0x180020933
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x40], rbx
lea r9, [rsp + 0x40]
lea r8, [rsp + 0x38]
mov edx, edi
mov rcx, r13
call fcn.18001fe00
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jne 0x18002089f
mov r9b, 1
movzx r8d, r9b
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
call fcn.18001f760
mov ebp, eax
jmp 0x18002090c
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
call fcn.18001f760
mov ebp, eax
test eax, eax
js 0x18002090c
mov qword [rsp + 0x48], rbx
lea rdx, [rsp + 0x48]
mov rcx, qword [rsp + 0x40]
call fcn.18001fec0
mov rbx, qword [rsp + 0x48]
mov rdx, rbx
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test ebp, ebp
js 0x18002090a
mov r9b, 1
xor r8d, r8d
mov rdx, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
call fcn.18001f760
mov ebp, eax
xor ebx, ebx
jmp 0x18002090c
xor ebx, ebx
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
add edi, 1
test ebp, ebp
jns 0x180020850
jmp 0x180020ca7
test ebp, ebp
js 0x180020ca7
lea rdx, str.__parameters_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test ebp, ebp
js 0x180020ca7
mov dword [rsp + 0x40], ebx
lea rdx, [rsp + 0x40]
mov rcx, r13
call fcn.1800200e0
mov r14d, dword [rsp + 0x40]
test r14d, r14d
jne 0x180020989
lea rdx, str._files___
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
jmp 0x180020bc0
lea rdx, str._files_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov r12d, ebx
test eax, eax
js 0x180020ca7
cmp r12d, r14d
jge 0x180020ba5
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x48], rbx
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantClear]
nop
mov word [rsp + 0x40], 0
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x48]
lea r8, [rsp + 0x50]
mov edx, r12d
mov rcx, r13
call fcn.180020300
mov ebp, eax
mov rsi, qword [rsp + 0x48]
mov rdi, qword [rsp + 0x50]
test eax, eax
js 0x180020b6a
lea rdx, [0x180046518]
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020b6a
mov rdx, rdi
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020b6a
mov qword [rsp + 0x38], rbx
cmp word [rsp + 0x40], 0
je 0x180020b0a
lea rdx, str._temporaryFile_true__
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020b42
mov word [rsp + 0xc0], 0
xor edx, edx
mov r8d, 0x206
lea rcx, [rsp + 0xc2]
call fcn.180026a20
lea rdx, [rsp + 0xc0]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
lea r9, [rsp + 0xc0]
xor r8d, r8d
lea rdx, [0x1800466c0]
lea rcx, [rsp + 0xc0]
call qword [sym.imp.KERNEL32.dll_GetTempFileNameW]
lea rdx, [rsp + 0xc0]
mov rcx, qword [rsp + 0x68]
call fcn.18001f810
mov ebp, eax
test eax, eax
js 0x180020b42
lea rcx, [rsp + 0xc0]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x40], rax
test rax, rax
je 0x180020b9a
lea rdx, [rsp + 0x38]
mov rcx, rax
call fcn.18001fec0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x180020b2e
lea rdx, str._temporaryFile_false__
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020b42
lea rdx, [rsp + 0x38]
mov rcx, rsi
call fcn.18001fec0
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test ebp, ebp
js 0x180020b68
mov r9b, 1
xor r8d, r8d
mov rdx, rdi
mov rcx, qword [rsp + 0x30]
call fcn.18001f760
mov ebp, eax
xor ebx, ebx
jmp 0x180020b6a
xor ebx, ebx
lea rcx, [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, rsi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
add r12d, 1
test ebp, ebp
js 0x180020ca7
jmp 0x1800209a7
mov ecx, 0x8007000e
call fcn.180001000
nop
test ebp, ebp
js 0x180020ca7
lea rdx, str.__files_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test ebp, ebp
js 0x180020ca7
lea rdx, str.__request_
mov rcx, qword [rsp + 0x30]
call fcn.18001f700
mov ebp, eax
test eax, eax
js 0x180020ca7
mov qword [rsp + 0x38], rbx
lea rdx, [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ole32.dll_GetHGlobalFromStream]
mov ebp, eax
test eax, eax
js 0x180020ca7
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalSize]
mov rsi, rax
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalLock]
mov rdi, rax
test rax, rax
je 0x180020c92
lea rcx, [rsp + 0x50]
call fcn.18001ce10
nop
xor edx, edx
lea rcx, [rsp + 0x50]
call fcn.18001f210
mov ebp, eax
test eax, eax
js 0x180020c7a
mov rdx, r15
mov rcx, r13
call fcn.18001f900
mov rbx, rax
mov r9d, esi
mov r8, rdi
mov rdx, r15
lea rcx, [rsp + 0x50]
call fcn.18001f2e0
mov ebp, eax
test rbx, rbx
je 0x180020c7a
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_GlobalUnlock]
nop
lea rcx, [rsp + 0x50]
call fcn.18001df20
jmp 0x180020ca7
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
test eax, eax
jle 0x180020ca7
movzx ebp, ax
or ebp, 0x80070000
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x180020cb7
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov eax, ebp
mov rcx, qword [rsp + 0x2d0]
xor rcx, rsp
call fcn.180026960
mov rbx, qword [rsp + 0x330]
add rsp, 0x2e0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret