Function at 0x44bd10
Capabilities:
Get common file path
Write file on windows

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x50ed5b
push eax
mov eax, 0x3f50
mov dword fs:[0], esp
call fcn.004c27a0
push ebx
push ebp
push esi
mov esi, ecx
push edi
or ecx, 0xffffffff
mov edi, dword [esi + 0x70]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ecx
inc ecx
push ecx
call fcn.004dd79a
mov edi, dword [esi + 0x70]
mov ebp, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
push ecx
call fcn.004dd79a
push 7
push ebp
push str.FTPURL
mov ebx, eax
call fcn.004c3040
add esp, 0x14
test eax, eax
jne 0x44c2dd
mov ecx, dword [esp + 0x10]
lea edx, [ebp + 7]
add ecx, 0xfffffffa
push ecx
push edx
push ebx
call fcn.004c2b80
push ebp
call fcn.004dd7c3
push 0x2f
push ebx
mov dword [esp + 0x28], 1
call fcn.004c4860
sub eax, ebx
push 0x2e
push ebx
mov esi, eax
call fcn.004c4860
mov ebp, eax
add esp, 0x20
sub eax, ebx
cmp esi, 5
jle 0x44be10
cmp eax, esi
jl 0x44be10
lea edi, [esi + ebx + 1]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x56c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, dword [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x44be81
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 0x8f4]
test eax, eax
jne 0x44be2e
push ebx
call fcn.004dd7c3
add esp, 4
xor eax, eax
jmp 0x44c302
lea edi, [esi + ebx]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x56c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x5525ac
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor edx, edx
rep movsb byte es:[edi], byte [esi]
mov al, byte [0x55cec0]
mov ecx, 0xff
mov byte [esp + 0x760], al
xor eax, eax
lea edi, [esp + 0x761]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x14]
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ecx + 0x8fc]
test eax, eax
je 0x44c17f
test edx, edx
je 0x44c17f
push 0
push str.IntegrationDownloadDir
lea edx, [esp + 0x18]
push str.Browser_Integration
push edx
call fcn.004f80ee
or ecx, 0xffffffff
mov edi, 0x55400c
xor eax, eax
lea edx, [esp + 0x68]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 1
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x6c]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push 0x55400c
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x3f70], 0
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x70]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str._Document
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x70]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
lea eax, [esp + esi + 0x71]
push eax
call fcn.004c2b80
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
lea ecx, [esp + esi + 0x7a]
push ebp
push ecx
call fcn.004c2b80
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 0x55cf24
add ecx, esi
lea edx, [esp + ecx + 0x8a]
push edx
call fcn.004c2b80
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 0x10
repne scasb al, byte es:[edi]
not ecx
dec ecx
push str.All_files__._
add ecx, esi
lea eax, [esp + ecx + 0x97]
push eax
call fcn.004c2b80
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 4
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 0x555f94
add ecx, esi
lea ecx, [esp + ecx + 0xb3]
push ecx
call fcn.004c2b80
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 0x55cf24
add ecx, esi
lea edx, [esp + ecx + 0xc3]
push edx
call fcn.004c2b80
mov ecx, 0x13
xor eax, eax
lea edi, [esp + 0x64]
lea edx, [esp + 0x5b4]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0xb0]
add esp, 0x48
mov dword [esp + 0x38], edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x1c]
push edx
mov dword [esp + 0x20], 0x4c
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], 0x1f4
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], 0x806
mov word [esp + 0x58], ax
mov word [esp + 0x5a], ax
mov dword [esp + 0x5c], eax
call dword [sym.imp.comdlg32.dll_GetSaveFileNameA]
test eax, eax
je 0x44c2bc
mov edi, dword [esp + 0x38]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x760]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x2b60]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x1360]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1760]
push ecx
push edx
lea ecx, [esp + 0xf68]
push eax
lea edx, [esp + 0x76c]
push ecx
push edx
call fcn.004c44f1
lea edi, [esp + 0xf74]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x14
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0xb60]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0xb60]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x1360]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0xb60]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x18]
push str.IntegrationDownloadDir
push str.Browser_Integration
call fcn.004e567c
lea ecx, [esp + 0x10]
mov dword [esp + 0x3f68], 0xffffffff
call fcn.004dd151
lea ecx, [esp + 0x468]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea edx, [esp + 0x1b60]
lea eax, [esp + 0x468]
push edx
push 0
push 0x554d78
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
push 0
push 0x80000080
push 2
push 0
push 1
lea ecx, [esp + 0x1b74]
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
test esi, esi
je 0x44be1e
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
mov ebp, dword [sym.imp.KERNEL32.dll_WriteFile]
repne scasb al, byte es:[edi]
not ecx
lea edx, [esp + 0x18]
push 0
dec ecx
push edx
push ecx
push ebx
push esi
call ebp
lea eax, [esp + 0x18]
push 0
push eax
mov edi, 0x5526b0
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x5526b0
push esi
call ebp
lea ecx, [esp + 0x18]
push 0
push ecx
lea edi, [esp + 0x768]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edx, [esp + 0x768]
push ecx
push edx
push esi
call ebp
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, str.DLFromBrowser
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2f60]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x2f60]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x1b60]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x2f60]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x3f74]
call fcn.004dd2da
push ebx
call fcn.004dd7c3
add esp, 4
jmp 0x44c2fd
push ebx
call fcn.004dd7c3
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x3f68], 0xffffffff
call fcn.004dd151
xor eax, eax
jmp 0x44c302
push ebx
call fcn.004dd7c3
push ebp
call fcn.004dd7c3
mov ecx, dword [esp + 0x3f78]
add esp, 8
push 0x55cec0
call fcn.004dd2da
mov eax, 1
mov ecx, dword [esp + 0x3f60]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x3f5c
ret 4