Function at 0x455420
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x47a1dd
mov eax, dword fs:[0]
push eax
sub esp, 0x288
mov eax, dword [0x49b3d4]
xor eax, esp
mov dword [esp + 0x280], eax
push ebx
push esi
push edi
mov eax, dword [0x49b3d4]
xor eax, esp
push eax
lea eax, [esp + 0x298]
mov dword fs:[0], eax
mov esi, ecx
push esi
lea eax, [esi + 0x58]
push eax
push 0x1388
push 0xa
push 0xa
push 0x1388
lea ecx, [esi + 0x14]
push 0x1388
xor ebx, ebx
push ecx
push ebx
lea edi, [esp + 0x158]
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x37], bl
mov dword [esp + 0x54], eax
mov dword [esp + 0x44], ecx
call fcn.004569b0
mov dword [esp + 0x2a0], ebx
movzx eax, byte [esi + 0xa4]
push 0xffffffffffffffff
push eax
mov esi, edi
call fcn.00456be0
test al, al
je 0x455caf
mov edi, dword [esp + 0x20]
push edi
lea ecx, [esp + 0xe4]
push str.Connection_is_opened:
push ecx
call fcn.0040ceb0
add esp, 0xc
mov esi, dword [esp + 0x14]
mov byte [esp + 0x2a0], 1
call fcn.0040263b
mov ecx, dword [esi + 0x38]
push eax
push str.INFO
call fcn.00416a80
lea ecx, [esp + 0xe0]
mov byte [esp + 0x2a0], bl
call fcn.00402601
lea edx, [esp + 0x1cc]
push edx
lea ebx, [esp + 0x140]
call fcn.00455de0
mov byte [esp + 0x2a0], 2
mov eax, dword [esp + 0x238]
mov dword [esp + 0x24], eax
mov dword [esi + 0x74], eax
cmp eax, dword [esi + 0xa0]
jae 0x45565b
mov eax, dword [esp + 0x138]
mov ebx, dword [sym.imp.WININET.dll_InternetCloseHandle]
test eax, eax
je 0x455562
push eax
call ebx
mov dword [esp + 0x138], 0
mov eax, dword [esp + 0x158]
test eax, eax
je 0x45557b
push eax
call ebx
mov dword [esp + 0x158], 0
mov eax, dword [esp + 0x15c]
test eax, eax
je 0x455594
push eax
call ebx
mov dword [esp + 0x15c], 0
mov ecx, dword [esi + 0x30]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
push str.File
lea eax, [esp + 0xe4]
call fcn.004025d0
mov ecx, eax
push 0
push edi
or eax, 0xffffffff
mov edi, ecx
mov byte [esp + 0x2a8], 3
call fcn.00403074
push str._is_less_then_minValidSize
push eax
call fcn.0040260f
call fcn.0040263b
mov ecx, dword [esi + 0x38]
push eax
push str.INFO
call fcn.00416a80
lea ecx, [esp + 0xe0]
call fcn.00402601
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x4555fe
push eax
call ebx
lea ecx, [esp + 0x21c]
call fcn.00402601
lea ecx, [esp + 0x1fc]
call fcn.00402601
lea ecx, [esp + 0x1cc]
call fcn.00402601
mov eax, dword [esp + 0x15c]
test eax, eax
je 0x455630
push eax
call ebx
lea ecx, [esp + 0x18c]
call fcn.00402601
lea ecx, [esp + 0x16c]
call fcn.00402601
lea ecx, [esp + 0x13c]
call fcn.00402601
xor al, al
jmp 0x455db2
lea eax, [esp + 0x1cc]
push eax
lea ecx, [esp + 0x240]
call fcn.004553a0
sub esp, 0x18
mov byte [esp + 0x2bc], 4
mov dword [esp + 0x34], esp
mov edi, esp
push ecx
mov eax, esp
mov dword [esp + 0x38], esp
call fcn.00404e4c
mov eax, edi
call fcn.00404e50
push 0
push 0
call fcn.0040327c
push 0xffffffffffffffff
lea ecx, [esp + 0x25c]
push ecx
xor eax, eax
mov ecx, edi
call fcn.0040317c
mov ecx, dword [esi + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx]
call eax
lea eax, [esp + 0x118]
call fcn.004025a9
mov byte [esp + 0x2a0], 5
cmp dword [esi + 0x4c], 0
je 0x4556d8
lea ecx, [esi + 0x3c]
push ecx
jmp 0x4556e0
lea edx, [esp + 0x21c]
push edx
lea ecx, [esp + 0x11c]
call fcn.00403b27
mov bl, byte [esp + 0x218]
lea eax, [esp + 0x1cc]
push eax
lea eax, [esp + 0x25c]
call fcn.004570d0
mov byte [esp + 0x2a0], 6
test bl, bl
jne 0x45573f
mov ecx, dword [esi + 0x30]
push ecx
lea ecx, [esp + 0x138]
call fcn.00456cb0
test eax, eax
lea esi, [esp + 0x134]
setne byte [esp + 0x13]
call fcn.00456c70
mov ebx, dword [esp + 0x14]
jmp 0x4558b9
lea esi, [esp + 0x134]
call fcn.00456c70
xor esi, esi
xor ecx, ecx
mov dword [esp + 0xe0], ecx
mov dword [esp + 0xe4], esi
mov dword [esp + 0xe8], esi
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
xor edx, edx
mov byte [esp + 0x2a0], 7
div dword [ebx + 0x34]
xor edi, edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x14], eax
cmp dword [ebx + 0x34], edi
jle 0x455848
mov dword [esp + 0x1c], edi
push 0x34
call fcn.00459337
add esp, 4
test eax, eax
je 0x4557a7
mov edx, dword [esp + 0x30]
mov dword [eax + 0x2c], edx
jmp 0x4557a9
xor eax, eax
lea ecx, [esp + 0x258]
mov dword [eax + 0xc], ecx
mov ecx, 0x1388
mov edx, 0xa
mov dword [eax + 0x18], edx
mov dword [eax + 0x28], edx
mov dword [eax], edi
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 8], ebx
mov edx, dword [ebx + 0x34]
dec edx
cmp edi, edx
jne 0x4557e3
mov ecx, dword [esp + 0x2c]
add ecx, dword [esp + 0x14]
jmp 0x4557e7
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x24], ecx
mov edx, dword [ebx + 0x30]
mov dword [eax + 4], edx
mov ecx, dword [ebx + 0x38]
lea edx, [esp + 0x28]
push edx
push 0
push eax
push 0x454c50
push 0
push 0
mov dword [eax + 0x30], ecx
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x18]
lea esi, [esp + 0xe0]
call fcn.00442f60
mov eax, dword [esp + 0x14]
add dword [esp + 0x1c], eax
inc edi
cmp edi, dword [ebx + 0x34]
jl 0x455790
mov esi, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe0]
mov edi, ecx
cmp ecx, esi
je 0x455869
mov edi, edi
mov ecx, dword [edi]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
add edi, 4
cmp edi, esi
jne 0x455850
mov ecx, dword [esp + 0xe0]
mov byte [esp + 0x13], 1
mov edi, ecx
cmp ecx, esi
je 0x4558a4
lea edx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
mov eax, dword [edi]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeThread]
cmp dword [esp + 0x1c], 0
je 0x455896
mov byte [esp + 0x13], 0
add edi, 4
cmp edi, esi
jne 0x455874
mov ecx, dword [esp + 0xe0]
mov byte [esp + 0x2a0], 6
test ecx, ecx
je 0x4558b9
push ecx
call fcn.004592db
add esp, 4
cmp dword [esp + 0x128], 0
je 0x455a2e
cmp byte [esp + 0x13], 0
je 0x455a2e
mov ecx, dword [ebx + 0x30]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
lea eax, [esp + 0xe0]
push eax
call edx
mov byte [esp + 0x2a0], 8
cmp dword [esp + 0xf0], 0
je 0x455a22
mov ecx, dword [ebx + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 0x14]
lea edx, [esp + 0xfc]
push edx
call eax
mov esi, eax
push str.MD5_of__
lea eax, [esp + 0x278]
mov byte [esp + 0x2a4], 9
call fcn.004025d0
mov edi, eax
mov ecx, dword [esp + 0x20]
push 0
push ecx
or eax, 0xffffffff
mov byte [esp + 0x2a8], 0xa
call fcn.00403074
push 0x48cf3c
push eax
call fcn.0040260f
push 0
lea edx, [esp + 0x11c]
mov edi, eax
push edx
or eax, 0xffffffff
call fcn.00403074
push str.__MD5_of_downloaded_file__
push eax
call fcn.0040260f
push 0
mov edi, eax
push esi
or eax, 0xffffffff
call fcn.00403074
push 0x48cf3c
push eax
call fcn.0040260f
mov edi, eax
push 0
lea eax, [esp + 0xe4]
push eax
or eax, 0xffffffff
call fcn.00403074
call fcn.0040263b
mov ecx, dword [ebx + 0x38]
push eax
push str.INFO
call fcn.00416a80
lea ecx, [esp + 0x274]
call fcn.00402601
lea ecx, [esp + 0xfc]
call fcn.00402601
lea eax, [esp + 0xe0]
call fcn.00404dd1
mov esi, eax
lea eax, [esp + 0xe0]
call fcn.004036f8
mov edi, dword [esp + 0x128]
mov dword [esp + 0x18], eax
mov eax, edi
cmp edi, esi
jb 0x4559ee
mov eax, esi
push eax
lea eax, [esp + 0x11c]
call fcn.004036f8
mov ecx, dword [esp + 0x1c]
call fcn.00404106
add esp, 4
test eax, eax
jne 0x455a1d
cmp edi, esi
jb 0x455a1d
cmp edi, esi
setne al
mov byte [esp + 0x13], 1
test eax, eax
je 0x455a22
mov byte [esp + 0x13], 0
lea ecx, [esp + 0xe0]
call fcn.00402601
lea esi, [esp + 0x94]
mov dword [esp + 0x34], 0x4848f0
mov dword [esp + 0x44], 0x483b90
call fcn.00402f44
mov byte [esp + 0x2a0], 0xb
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 4]
xor eax, eax
mov dword [esp + edx + 0x34], vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
lea eax, [esp + 0x4c]
push eax
mov eax, dword [ecx + 4]
lea eax, [esp + eax + 0x38]
mov dword [esp + 0x1c], 1
call fcn.0040351b
mov edx, dword [esp + 0x44]
mov eax, dword [edx + 4]
mov dword [esp + eax + 0x44], vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 4]
mov dword [esp + edx + 0x34], vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov dword [esp + 0x2a0], 0x10
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 4]
push 3
lea edx, [esp + 0x50]
mov esi, vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
push edx
mov dword [esp + ecx + 0x3c], esi
call fcn.004032c2
mov byte [esp + 0x2a0], 0x11
mov ecx, dword [ebx + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 0x14]
lea edx, [esp + 0xfc]
push edx
call eax
mov edi, eax
mov byte [esp + 0x2a0], 0x12
mov ecx, dword [ebx + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
push eax
push ecx
mov edx, dword [esp + 0x28]
push 0x48cf3c
push ecx
push edi
push ecx
push str.__length_of_downloaded_file__
push ecx
mov ecx, dword [esp + 0x44]
push ecx
push ecx
push 0x48cf3c
push ecx
push edx
push ecx
lea eax, [esp + 0x7c]
push str.length_of__
push eax
call fcn.00403bd5
add esp, 0xc
push eax
call fcn.0040c9b0
add esp, 0xc
push eax
call fcn.00403bd5
add esp, 0xc
push eax
call fcn.00409590
add esp, 4
push eax
call fcn.00403bd5
add esp, 0xc
push eax
call fcn.0040c9b0
add esp, 0xc
push eax
call fcn.00403bd5
add esp, 0xc
push eax
call fcn.00409590
push eax
call fcn.00402188
lea ecx, [esp + 0xfc]
mov byte [esp + 0x2a0], 0x11
call fcn.00402601
lea edi, [esp + 0xfc]
lea eax, [esp + 0x34]
call fcn.00409820
mov byte [esp + 0x2a0], 0x13
call fcn.0040263b
mov ecx, dword [ebx + 0x38]
push eax
push str.INFO
call fcn.00416a80
mov ecx, edi
mov byte [esp + 0x2a0], 0x11
call fcn.00402601
cmp byte [esp + 0x13], 0
je 0x455be4
mov edi, dword [esp + 0x24]
cmp edi, 0xffffffff
je 0x455bdd
mov ecx, dword [ebx + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
cmp eax, edi
jne 0x455be4
mov byte [esp + 0x13], 1
jmp 0x455be9
mov byte [esp + 0x13], 0
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 4]
lea ecx, [esp + 0x94]
mov dword [esp + 0x28], ecx
mov dword [esp + eax + 0x34], esi
lea ecx, [esp + 0x4c]
mov byte [esp + 0x2a0], 0x14
call fcn.00402640
mov byte [esp + 0x2a0], 6
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 4]
lea ecx, [esp + 0x4c]
mov dword [esp + edx + 0x34], vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
call fcn.00402179
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 4]
mov dword [esp + ecx + 0x34], vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
lea ecx, [esp + 0x94]
call fcn.004022a1
lea ecx, [esp + 0x258]
call fcn.00402601
lea ecx, [esp + 0x118]
call fcn.00402601
lea ecx, [esp + 0x23c]
call fcn.00402601
mov byte [esp + 0x2a0], 0
mov eax, dword [esp + 0x1ec]
test eax, eax
je 0x455c89
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
lea ecx, [esp + 0x21c]
call fcn.00402601
lea ecx, [esp + 0x1fc]
call fcn.00402601
lea ecx, [esp + 0x1cc]
call fcn.00402601
jmp 0x455d02
mov edx, dword [esp + 0x20]
push edx
lea eax, [esp + 0x100]
push str.Cant_open_connection_to
push eax
call fcn.0040ceb0
add esp, 0xc
mov ecx, dword [esp + 0x14]
mov byte [esp + 0x2a0], 0x15
mov esi, dword [ecx + 0x38]
call fcn.0040263b
push eax
push str.INFO
mov ecx, esi
call fcn.00416a80
lea ecx, [esp + 0xfc]
mov byte [esp + 0x2a0], 0
call fcn.00402601
mov ebx, dword [esp + 0x14]
mov ecx, dword [ebx + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp byte [esp + 0x13], 0
mov esi, str.SUCCESS
jne 0x455d1d
mov esi, str.FAILED
push str.Download__
lea eax, [esp + 0x100]
call fcn.004025d0
mov edi, eax
mov ecx, dword [esp + 0x20]
push 0
push ecx
or eax, 0xffffffff
mov byte [esp + 0x2a8], 0x16
call fcn.00403074
push esi
push str.__is
push eax
call fcn.0040260f
push eax
call fcn.0040260f
call fcn.0040263b
mov ecx, dword [ebx + 0x38]
push eax
push str.INFO
call fcn.00416a80
lea ecx, [esp + 0xfc]
call fcn.00402601
mov eax, dword [esp + 0x15c]
test eax, eax
je 0x455d8a
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
lea ecx, [esp + 0x18c]
call fcn.00402601
lea ecx, [esp + 0x16c]
call fcn.00402601
lea ecx, [esp + 0x13c]
call fcn.00402601
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x298]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x280]
xor ecx, esp
call fcn.00458db6
mov esp, ebp
pop ebp
ret