Function at 0x140021a80
Capabilities:
Download url
Receive data

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x230
mov rax, qword [0x1400920a0]
xor rax, rsp
mov qword [rsp + 0x228], rax
mov r14, r8
mov rsi, rdx
mov qword [rsp + 0x180], rdx
mov qword [rsp + 0x68], r8
lea rdx, [rsp + 0x188]
call fcn.1400202d0
mov rdx, rax
mov rcx, r14
call fcn.140007010
mov rdx, qword [rsp + 0x1a0]
cmp rdx, 0x10
jb 0x140021b13
inc rdx
mov rcx, qword [rsp + 0x188]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021b0e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022796
call fcn.14003cd90
cmp qword [r14 + 0x10], 0
jne 0x140021c3e
xor edi, edi
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], 0xf
lea r8d, [rdi + 0x33]
lea rdx, str.Updater.DownloadUpdater_error_getting_download_path
lea rcx, [rsp + 0x40]
call fcn.140007e00
lea rcx, [rsp + 0x40]
call fcn.14002e290
lea rax, [rsp + 0x40]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], 0xf
lea r8d, [rdi + 0x27]
lea rdx, str.Error_getting_destination_download_path
lea rcx, [rsp + 0x40]
call fcn.140007e00
nop
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b8], rdi
mov qword [rsp + 0x1c0], 0xf
lea r8d, [rdi + 0xf]
lea rdx, str.DownloadUpdater
lea rcx, [rsp + 0x1a8]
call fcn.140007e00
nop
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x1a8]
call fcn.14001a090
nop
mov rdx, qword [rsi + 0x18]
cmp rdx, 0x10
jb 0x140021c07
inc rdx
mov rcx, qword [rsi]
cmp rdx, 0x1000
jb 0x140021c02
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x1400227cc
mov rcx, r8
call fcn.14003cd90
mov qword [rsi + 0x10], rdi
mov qword [rsi + 0x18], 0xf
mov byte [rsi], 0
mov eax, 5
mov rcx, qword [rsp + 0x228]
xor rcx, rsp
call fcn.14003cd70
add rsp, 0x230
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
mov rdx, r14
lea rcx, [rsp + 0x70]
call fcn.1400292b0
mov rcx, qword [rax]
movsxd rdx, dword [rcx + 4]
mov ebx, dword [rdx + rax + 0x10]
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea r13, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], r13
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x6c], edx
lea rcx, [rsp + 0x80]
call fcn.140006750
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], rax
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rsp + rcx + 0x6c], edx
lea r12, vtable.std::ios_base.0
mov qword [rsp + 0x120], r12
lea rcx, [rsp + 0x120]
call fcn.14003b2e0
nop
test ebx, ebx
jne 0x140021d44
mov rcx, r14
cmp qword [r14 + 0x18], 0x10
jb 0x140021cde
mov rcx, qword [r14]
call fcn.14005062c
mov rcx, qword [r14 + 0x10]
movabs r15, 0x7fffffffffffffff
mov rax, r15
sub rax, rcx
cmp rax, 0x31
jb 0x14002279c
mov rax, r14
cmp qword [r14 + 0x18], 0x10
jb 0x140021d0e
mov rax, qword [r14]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x31
lea r9, str.Updater.DownloadUpdater_Deleting_old_update_from
lea rcx, [rsp + 0x188]
call fcn.14000a670
lea rcx, [rsp + 0x188]
call fcn.14002e290
jmp 0x140021d4e
movabs r15, 0x7fffffffffffffff
jmp 0x140021d75
xor edi, edi
mov ebx, edi
nop dword [rax]
mov rcx, qword [rsi + 0x10]
mov rax, r15
sub rax, rcx
cmp rax, 0x12
jb 0x140022790
mov rax, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x140021da1
mov rax, qword [rsi]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x12
lea r9, str.About_to_download
lea rcx, [rsp + 0x188]
call fcn.14000a670
nop
mov r8d, 4
lea rdx, str._to
lea rcx, [rsp + 0x188]
call fcn.140007f60
mov qword [rsp + 0x1c8], rdi
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x1c8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x1d8], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, r14
cmp qword [r14 + 0x18], 0x10
jb 0x140021e2e
mov rdx, qword [r14]
mov r8, qword [r14 + 0x10]
lea rcx, [rsp + 0x1c8]
call fcn.140007f60
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b8], rdi
mov qword [rsp + 0x1c0], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x1a8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x1b8], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
lea rcx, [rsp + 0x1a8]
call fcn.14002e290
nop
mov rdx, qword [rsp + 0x1e0]
cmp rdx, 0x10
jb 0x140021ece
inc rdx
mov rcx, qword [rsp + 0x1c8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021ec9
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227a2
call fcn.14003cd90
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], 0xf
mov byte [rsp + 0x1c8], 0
mov rdx, qword [rsp + 0x1a0]
cmp rdx, 0x10
jb 0x140021f2d
inc rdx
mov rcx, qword [rsp + 0x188]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021f28
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227a8
call fcn.14003cd90
lea rax, [rsp + 0x1a8]
mov qword [rsp + 0x60], rax
mov rcx, qword [rsi + 0x10]
mov rax, r15
sub rax, rcx
cmp rax, 0x12
jb 0x1400227e3
mov rax, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x140021f5b
mov rax, qword [rsi]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x12
lea r9, str.About_to_download
lea rcx, [rsp + 0x188]
call fcn.14000a670
nop
mov r8d, 4
lea rdx, str._to
lea rcx, [rsp + 0x188]
call fcn.140007f60
mov qword [rsp + 0x1c8], rdi
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x1c8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x1d8], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, r14
cmp qword [r14 + 0x18], 0x10
jb 0x140021fe8
mov rdx, qword [r14]
mov r8, qword [r14 + 0x10]
lea rcx, [rsp + 0x1c8]
call fcn.140007f60
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b8], rdi
mov qword [rsp + 0x1c0], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x1a8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x1b8], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], 0xf
mov r8d, 0x18
lea rdx, str.Updater::DownloadUpdater
lea rcx, [rsp + 0x40]
call fcn.140007e00
nop
lea rdx, [rsp + 0x1a8]
lea rcx, [rsp + 0x40]
call fcn.140019de0
nop
mov rdx, qword [rsp + 0x1e0]
cmp rdx, 0x10
jb 0x1400220b8
inc rdx
mov rcx, qword [rsp + 0x1c8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400220b3
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227ae
call fcn.14003cd90
mov qword [rsp + 0x1d8], rdi
mov qword [rsp + 0x1e0], 0xf
mov byte [rsp + 0x1c8], 0
mov rdx, qword [rsp + 0x1a0]
cmp rdx, 0x10
jb 0x140022117
inc rdx
mov rcx, qword [rsp + 0x188]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022112
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227b4
call fcn.14003cd90
mov r8, r14
cmp qword [r14 + 0x18], 0x10
jb 0x140022124
mov r8, qword [r14]
mov rdx, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x140022131
mov rdx, qword [rsi]
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.urlmon.dll_URLDownloadToFileA]
mov r8d, eax
inc ebx
test eax, eax
je 0x1400224c3
cmp ebx, 3
jl 0x140021d80
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
lea r9, [rsp + 0x1dd]
test r8d, r8d
jns 0x1400221b0
neg r8d
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x140022171
dec r9
mov byte [r9], 0x2d
jmp 0x1400221da
dec r9
mov eax, 0xcccccccd
mul r8d
shr edx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8d, edx
test edx, edx
jne 0x1400221b0
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b8], rdi
mov qword [rsp + 0x1c0], 0xf
mov byte [rsp + 0x1a8], 0
lea rax, [rsp + 0x1dd]
cmp r9, rax
je 0x140022227
lea r8, [rsp + 0x1dd]
sub r8, r9
mov rdx, r9
lea rcx, [rsp + 0x1a8]
call fcn.140007e00
nop
mov r9d, 0xb
lea r8, str.Error_code
lea rcx, [rsp + 0x1a8]
call fcn.14000b490
mov qword [rsp + 0x208], rdi
mov qword [rsp + 0x218], rdi
mov qword [rsp + 0x220], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x208], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x218], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov r8d, 0x19
lea rdx, str._while_downloading_from:
lea rcx, [rsp + 0x208]
call fcn.140007f60
mov qword [rsp + 0x1e8], rdi
mov qword [rsp + 0x1f8], rdi
mov qword [rsp + 0x200], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x1e8], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x1f8], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, rsi
cmp qword [rsi + 0x18], 0x10
jb 0x1400222e4
mov rdx, qword [rsi]
mov r8, qword [rsi + 0x10]
lea rcx, [rsp + 0x1e8]
call fcn.140007f60
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x40], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x50], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov qword [rsp + 0x188], rdi
mov qword [rsp + 0x198], rdi
mov qword [rsp + 0x1a0], 0xf
mov r8d, 0xf
lea rdx, str.DownloadUpdater
lea rcx, [rsp + 0x188]
call fcn.140007e00
nop
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x188]
call fcn.14001a090
nop
mov rdx, qword [rsp + 0x200]
cmp rdx, 0x10
jb 0x1400223b1
inc rdx
mov rcx, qword [rsp + 0x1e8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400223ac
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227ba
call fcn.14003cd90
mov qword [rsp + 0x1f8], rdi
mov qword [rsp + 0x200], 0xf
mov byte [rsp + 0x1e8], 0
mov rdx, qword [rsp + 0x220]
cmp rdx, 0x10
jb 0x140022410
inc rdx
mov rcx, qword [rsp + 0x208]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002240b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227c0
call fcn.14003cd90
mov qword [rsp + 0x218], rdi
mov qword [rsp + 0x220], 0xf
mov byte [rsp + 0x208], 0
mov rdx, qword [rsp + 0x1c0]
cmp rdx, 0x10
jb 0x140022470
inc rdx
mov rcx, qword [rsp + 0x1a8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002246a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227c6
call fcn.14003cd90
nop
mov rdx, qword [rsi + 0x18]
cmp rdx, 0x10
jb 0x1400224aa
inc rdx
mov rcx, qword [rsi]
cmp rdx, 0x1000
jb 0x1400224a5
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x1400227cc
mov rcx, r8
call fcn.14003cd90
mov qword [rsi + 0x10], rdi
mov qword [rsi + 0x18], 0xf
mov byte [rsi], 0
mov eax, 6
jmp 0x140021c1b
mov qword [rsp + 0x188], rdi
mov qword [rsp + 0x198], rdi
mov qword [rsp + 0x1a0], 0xf
mov r8d, 0x11
lea rdx, str.Download_complete
lea rcx, [rsp + 0x188]
call fcn.140007e00
lea rcx, [rsp + 0x188]
call fcn.14002e290
nop
mov rdx, r14
lea rcx, [rsp + 0x70]
call fcn.1400292b0
mov rcx, qword [rax]
movsxd rdx, dword [rcx + 4]
mov ebx, dword [rdx + rax + 0x10]
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
mov qword [rsp + rcx + 0x70], r13
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x6c], edx
lea rcx, [rsp + 0x80]
call fcn.140006750
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x70], rax
mov rax, qword [rsp + 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rsp + rcx + 0x6c], edx
mov qword [rsp + 0x120], r12
lea rcx, [rsp + 0x120]
call fcn.14003b2e0
nop
test ebx, ebx
je 0x14002276a
mov rcx, qword [r14 + 0x10]
mov rax, r15
sub rax, rcx
cmp rax, 0x28
jb 0x1400227d2
mov rax, r14
cmp qword [r14 + 0x18], 0x10
jb 0x1400225b1
mov rax, qword [r14]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], 0x28
lea r9, str.Updater.DownloadUpdater_downloaded_file
lea rcx, [rsp + 0x188]
call fcn.14000a670
nop
mov r8d, 0xf
lea rdx, str._does_not_exist
lea rcx, [rsp + 0x188]
call fcn.140007f60
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x40], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x50], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
lea rcx, [rsp + 0x40]
call fcn.14002e290
nop
mov rdx, qword [rsp + 0x1a0]
cmp rdx, 0x10
jb 0x140022670
inc rdx
mov rcx, qword [rsp + 0x188]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002266b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400227d7
call fcn.14003cd90
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov rax, qword [r14 + 0x10]
sub r15, rax
cmp r15, 0x10
jb 0x1400227dd
cmp qword [r14 + 0x18], 0x10
jb 0x140022695
mov r14, qword [r14]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], 0x10
lea r9, str.Downloaded_file
lea rcx, [rsp + 0x1a8]
call fcn.14000a670
nop
mov r8d, 0xf
lea rdx, str._does_not_exist
lea rcx, [rsp + 0x1a8]
call fcn.140007f60
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x58], rdi
movups xmm0, xmmword [rax]
movups xmmword [rsp + 0x40], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rsp + 0x50], xmm1
mov qword [rax + 0x10], rdi
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov qword [rsp + 0x188], rdi
mov qword [rsp + 0x198], rdi
mov qword [rsp + 0x1a0], 0xf
lea rdx, str.DownloadUpdater
lea rcx, [rsp + 0x188]
call fcn.140007de0
nop
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x188]
call fcn.14001a090
nop
lea rcx, [rsp + 0x1a8]
call fcn.140006fb0
nop
mov rcx, rsi
call fcn.140006fb0
mov eax, 7
jmp 0x140021c1b
mov rcx, rsi
call fcn.140006fb0
xor eax, eax
jmp 0x140021c1b
call fcn.140001350
int3
call fcn.14004f8c4
nop
call fcn.140001350
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.14004f8c4
nop
call fcn.140001350
call fcn.14004f8c4
int3
call fcn.140001350
nop
call fcn.140001350
int3