Function at 0x420e50
Capabilities:
Get file size
Parse url

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x48afc3
mov eax, dword fs:[0]
push eax
sub esp, 0xa4
mov eax, dword [0x4c0074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [ebp + 8]
lea ecx, [edi + 0x20]
mov esi, dword [ebp + 0xc]
push eax
call fcn.00425200
mov edx, dword [esi]
lea ecx, [edi + 0x18]
mov dword [ebp - 0x80], ecx
or esi, 0xffffffff
mov ecx, dword [ecx]
sub ecx, 0x10
lea eax, [edx - 0x10]
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x74], eax
cmp eax, ecx
je 0x420f00
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x78], eax
jl 0x420ef4
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x420ef4
mov ecx, dword [ebp - 0x74]
call fcn.00402480
mov dword [ebp - 0x74], eax
mov ecx, esi
mov eax, dword [ebp - 0x78]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x420ee9
mov eax, dword [ebp - 0x6c]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
or esi, 0xffffffff
mov eax, dword [ebp - 0x74]
add eax, 0x10
mov dword [edi + 0x18], eax
jmp 0x420f00
push dword [edx - 0xc]
lea ecx, [edi + 0x18]
push edx
call fcn.00403ae0
mov edx, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
sub ecx, 0x10
mov dword [ebp - 0x6c], ecx
lea eax, [edx - 0x10]
mov dword [ebp - 0x74], eax
cmp eax, ecx
je 0x420f6e
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x78], eax
jl 0x420f5e
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x420f5e
mov ecx, dword [ebp - 0x74]
call fcn.00402480
mov dword [ebp - 0x74], eax
mov ecx, esi
mov eax, dword [ebp - 0x78]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x420f51
mov eax, dword [ebp - 0x6c]
push eax
mov esi, dword [eax]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
mov eax, dword [ebp - 0x74]
lea esi, [edi + 0x1c]
add eax, 0x10
mov dword [esi], eax
jmp 0x420f71
push dword [edx - 0xc]
lea esi, [edi + 0x1c]
push edx
mov ecx, esi
call fcn.00403ae0
jmp 0x420f71
lea esi, [edi + 0x1c]
push 5
push str..part
mov ecx, esi
call fcn.00402280
mov dword [edi + 4], 0
lea edx, [edi + 0x20]
mov dword [edi + 8], 0
mov byte [edi + 0x88], 1
mov eax, dword [edx + 4]
mov dword [ebp - 0x7c], 0
test eax, eax
je 0x421094
xor ecx, ecx
mov dword [ebp - 0x78], ecx
test eax, eax
jle 0x42105a
mov esi, dword [ebp - 0x84]
nop dword [eax]
test ecx, ecx
js 0x4218e4
cmp ecx, eax
jge 0x4218e4
mov eax, dword [edx]
xorps xmm0, xmm0
lea edx, [ebp - 0x4c]
movlpd qword [ebp - 0x48], xmm0
push edx
push 0
push 0
push dword [eax + ecx*4]
movlpd qword [ebp - 0x40], xmm0
movlpd qword [ebp - 0x38], xmm0
movlpd qword [ebp - 0x30], xmm0
movlpd qword [ebp - 0x28], xmm0
movlpd qword [ebp - 0x20], xmm0
movlpd qword [ebp - 0x18], xmm0
mov dword [ebp - 0x4c], 0x3c
call dword [sym.imp.WININET.dll_InternetCrackUrlW]
test eax, eax
jne 0x421025
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x74], eax
test eax, eax
je 0x421028
mov esi, eax
jmp 0x421099
mov esi, dword [ebp - 0x40]
cmp esi, 5
jne 0x421036
mov byte [edi + 0x88], 0
jmp 0x421045
cmp esi, 3
je 0x421045
cmp esi, 4
je 0x421045
cmp esi, 1
jne 0x421094
mov ecx, dword [ebp - 0x78]
lea edx, [edi + 0x20]
mov eax, dword [edx + 4]
inc ecx
mov dword [ebp - 0x78], ecx
cmp ecx, eax
jl 0x420fc0
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x421234
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x421234
call fcn.0041e1d0
mov esi, eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4218c6
jmp 0x42118d
mov esi, 0x2ee6
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x421179
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x421179
call fcn.0041e1d0
mov dword [ebp - 0x74], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4218d0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x70], eax
mov dword [ebp - 4], 2
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4218da
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x7c], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x70]
push 0x11
push str.CheckURL___failed
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x7c]
call fcn.00402280
push ecx
lea eax, [ebp - 0x70]
push eax
push ecx
mov ecx, dword [ebp - 0x74]
lea eax, [ebp - 0x7c]
push eax
call fcn.0041e320
mov byte [ebp - 4], 2
or eax, 0xffffffff
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421152
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov ecx, dword [ebp - 0x70]
add ecx, 0xfffffff0
mov dword [ebp - 0x74], ecx
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x421179
mov ecx, dword [ecx]
push dword [ebp - 0x74]
mov edx, dword [ecx]
call dword [edx + 4]
push 0
push esi
push 0
lea ecx, [edi + 0xc]
call fcn.00425730
mov eax, esi
jmp 0x4218a9
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x6c], eax
mov dword [ebp - 4], 0xc
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4218f0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x70], eax
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x6c]
push 0x2c
push str.Entering_AsyncDownloadThread::DownloadProc__
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x70]
call fcn.00402280
push ecx
lea eax, [ebp - 0x6c]
push eax
push ecx
lea eax, [ebp - 0x70]
mov ecx, esi
push eax
call fcn.0041e320
mov byte [ebp - 4], 0xc
or esi, 0xffffffff
mov edx, dword [ebp - 0x70]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421211
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, esi
mov edx, dword [ebp - 0x6c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421237
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x421237
or esi, 0xffffffff
lea eax, [ebp - 0x7c]
mov ecx, edi
push eax
call fcn.00422930
mov dword [ebp - 0x74], eax
test eax, eax
je 0x421329
call fcn.0041e1d0
cmp byte [eax + 0x1c], 0
je 0x421321
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x421321
call fcn.0041e1d0
mov edi, eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4218fa
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x7c], eax
mov dword [ebp - 4], 0x16
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x421904
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x6c], eax
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x7c]
push 0x1b
push str.InitInetConnection___failed
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x6c]
call fcn.00402280
push ecx
lea eax, [ebp - 0x7c]
push eax
push ecx
lea eax, [ebp - 0x6c]
mov ecx, edi
push eax
call fcn.0041e320
mov byte [ebp - 4], 0x16
mov eax, esi
mov edx, dword [ebp - 0x6c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421302
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x7c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x421321
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x74]
jmp 0x4218a9
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0xa0], 0x4a6da8
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 0x1e
lea ecx, [edi + 0x7c]
cmp dword [ecx], 0
jbe 0x421357
push 4
push ecx
push 2
push eax
call dword [sym.imp.WININET.dll_InternetSetOptionW]
mov edx, dword [edi + 0x18]
mov ecx, dword [edx - 0xc]
cmp ecx, 2
jb 0x42185e
test ecx, ecx
js 0x42190e
cmp word [edx], 0x5c
jne 0x421384
cmp ecx, 1
jl 0x421918
cmp word [edx + 2], 0x5c
je 0x421398
cmp ecx, 1
jl 0x421922
cmp word [edx + 2], 0x3a
jne 0x42185e
cmp byte [edi + 0x40], 0
mov dword [ebp - 0x78], 0
je 0x421424
push 0
push 0x80
push 3
push 0
push 3
push SysReAllocString
push dword [edi + 0x1c]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x88], 0x4a4fc8
mov dword [ebp - 0x84], eax
mov byte [ebp - 4], 0x1f
cmp eax, 0xffffffff
jne 0x4213ed
mov byte [ebp - 4], 0x1e
mov dword [ebp - 0x88], 0x4a4fc8
push eax
jmp 0x421414
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, 0xffffffff
je 0x4213fe
mov dword [ebp - 0x78], eax
mov byte [ebp - 4], 0x1e
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x88], 0x4a4fc8
test eax, eax
je 0x421424
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x84], 0
lea eax, [ebp - 0x8c]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x84], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x42192c
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x8c], eax
mov byte [ebp - 4], 0x22
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x6c]
mov ecx, edi
push eax
lea eax, [ebp - 0x78]
push eax
push dword [ebp - 0x7c]
call fcn.00422c40
mov dword [ebp - 0x70], eax
lea eax, [edi + 0xc]
mov ecx, eax
mov dword [ebp - 0x74], eax
call fcn.004258d0
test al, al
je 0x42156e
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x42155c
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x42155c
call fcn.0041e1d0
mov edi, eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x421936
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x70], eax
mov byte [ebp - 4], 0x25
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x421940
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x6c], eax
mov byte [ebp - 4], 0x28
lea ecx, [ebp - 0x70]
push 0x15
push str.Download_was_canceled
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x6c]
call fcn.00402280
push ecx
lea eax, [ebp - 0x70]
push eax
push ecx
lea eax, [ebp - 0x6c]
mov ecx, edi
push eax
call fcn.0041e320
mov byte [ebp - 4], 0x25
mov eax, esi
mov edx, dword [ebp - 0x6c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42153e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x22
mov eax, esi
mov edx, dword [ebp - 0x70]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42155c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
mov dword [ebp - 0x70], 0xe0000008
jmp 0x42182d
cmp dword [ebp - 0x70], 0
je 0x421699
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x421649
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x421649
call fcn.0041e1d0
mov edi, eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x42194a
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x78], eax
mov byte [ebp - 4], 0x31
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x421954
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x6c], eax
mov byte [ebp - 4], 0x34
lea ecx, [ebp - 0x78]
push 0x10
push str.Connect___failed
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x6c]
call fcn.00402280
push ecx
lea eax, [ebp - 0x78]
push eax
push ecx
lea eax, [ebp - 0x6c]
mov ecx, edi
push eax
call fcn.0041e320
mov byte [ebp - 4], 0x31
mov eax, esi
mov edx, dword [ebp - 0x6c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42162b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x22
mov eax, esi
mov edx, dword [ebp - 0x78]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421649
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x70]
cmp edi, 0xe0000013
je 0x42168e
mov edx, dword [ebp - 0x80]
lea ecx, [ebp - 0x80]
call fcn.00409c90
mov byte [ebp - 4], 0x39
mov ecx, dword [ebp - 0x74]
push 0
push edi
push dword [eax]
call fcn.00425730
mov byte [ebp - 4], 0x22
mov eax, esi
mov edx, dword [ebp - 0x80]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x42168e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
jmp 0x42182d
mov eax, dword [edi + 8]
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x98], 0x4a6da8
mov dword [ebp - 0x94], eax
mov byte [ebp - 4], 0x3d
lea ecx, [ebp - 0xb0]
push dword [edi + 0x70]
push dword [edi + 0x68]
push dword [edi + 4]
call fcn.0041f940
mov byte [ebp - 4], 0x3e
mov ecx, dword [edi + 0x84]
mov eax, dword [ebp - 0x6c]
test ecx, ecx
je 0x42172d
test eax, eax
je 0x42172d
cmp ecx, eax
je 0x42172d
mov edx, dword [ebp - 0x80]
lea ecx, [ebp - 0x80]
call fcn.00409c90
mov byte [ebp - 4], 0x3f
mov ecx, dword [ebp - 0x74]
push 0
push 0xe0000023
push dword [eax]
call fcn.00425730
mov byte [ebp - 4], 0x3e
mov eax, esi
mov edx, dword [ebp - 0x80]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x421721
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x70], 0xe0000023
jmp 0x4217ee
cmp dword [ebp - 0x90], 1
jne 0x4217d6
mov eax, dword [edi + 0xc]
xorps xmm0, xmm0
mov cl, byte [edi + 0x80]
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x38], eax
xor al, al
cmp byte [edi + 0x62], 0
mov byte [ebp - 0x34], cl
mov ecx, 1
movzx eax, al
cmovne eax, ecx
movsd qword [ebp - 0x58], xmm0
movups xmm0, xmmword [edi + 0x42]
mov byte [ebp - 0x22], al
lea ecx, [ebp - 0x68]
lea eax, [edi + 0x18]
mov dword [ebp - 0x68], 0x4a4ca8
push eax
movups xmmword [ebp - 0x32], xmm0
lea eax, [ebp - 0x8c]
mov word [ebp - 0x64], 0x101
xorps xmm0, xmm0
mov dword [ebp - 0x50], 1
push eax
mov word [ebp - 0x4c], 1
mov byte [ebp - 0x44], 0
mov dword [ebp - 0x40], 0x4a4ca8
mov word [ebp - 0x3c], 0x101
movups xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0x48], 1
mov byte [ebp - 0x4a], 1
call fcn.00401ca0
mov dword [ebp - 0x70], eax
test eax, eax
jne 0x4217ee
cmp byte [edi + 0x62], al
je 0x4217ee
movups xmm0, xmmword [ebp - 0x20]
movups xmmword [edi + 0x52], xmm0
jmp 0x4217ee
push dword [ebp - 0x78]
mov ecx, edi
push eax
lea eax, [ebp - 0xb0]
push eax
push dword [ebp - 0x7c]
call fcn.00421960
mov dword [ebp - 0x70], eax
mov byte [ebp - 4], 0x3d
lea ecx, [ebp - 0xb0]
call fcn.0041f9b0
mov byte [ebp - 4], 0x22
mov edi, dword [ebp - 0x84]
push 0
push edi
mov dword [ebp - 0x98], 0x4a6da8
call dword [sym.imp.WININET.dll_InternetSetStatusCallbackW]
push edi
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call edi
mov dword [ebp - 0x94], 0
mov byte [ebp - 4], 0x1e
lea eax, [ebp - 0x8c]
mov dword [ebp - 0x84], eax
mov byte [ebp - 4], 0x1e
mov edx, dword [ebp - 0x8c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x42187c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x42187c
push 0
push 0xe0000005
lea ecx, [edi + 0xc]
push 0
call fcn.00425730
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
mov dword [ebp - 0x70], 0xe0000005
mov dword [ebp - 4], 0xffffffff
mov esi, dword [ebp - 0x7c]
push 0
push esi
mov dword [ebp - 0xa0], 0x4a6da8
call dword [sym.imp.WININET.dll_InternetSetStatusCallbackW]
push esi
call edi
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x9c], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0046c8db
mov esp, ebp
pop ebp
ret 8
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 1
push 0xc000008c
call fcn.004036b0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80070057
call fcn.004023a0
push 0x80070057
call fcn.004023a0
push 0x80070057
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
int3