Function at 0x421739
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49fa84
mov eax, dword fs:[0]
push eax
mov eax, 0x2b30
call fcn.00488190
mov eax, dword [0x4c9890]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x2ae0], edx
cmp ecx, 0x474
ja 0x420c9f
je 0x420c8d
cmp ecx, 0x10
je 0x420c81
cmp ecx, 0x112
je 0x420c23
cmp ecx, 0x218
jne case.0x420cb7.1147
push ebx
push dword [ebp + 0x10]
mov byte [ebp - 0x2ae0], 0
push dword [ebp - 0x2ae0]
push edi
call fcn.004144f0
add esp, 0x10
xor eax, eax
jmp 0x421853
mov esi, dword [ebp + 0x10]
push ebx
push esi
push str.WM_SYSCOMMAND__d__d
call fcn.00413860
add esp, 0xc
cmp esi, 0xf020
jne 0x420c4f
push 6
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_ShowWindow]
xor eax, eax
jmp 0x421853
cmp esi, 0xf120
jne 0x420c69
push 9
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_ShowWindow]
xor eax, eax
jmp 0x421853
push ebx
push esi
push 0x112
push dword [ebp - 0x2ae0]
call dword [sym.imp.USER32.dll_DefWindowProcW]
jmp 0x421853
mov ecx, edi
call fcn.00419020
jmp 0x421853
push ebx
push dword [ebp + 0x10]
mov ecx, edi
call fcn.00417570
xor eax, eax
jmp 0x421853
lea eax, [ecx - 0x475]
cmp eax, 0x92
ja case.0x420cb7.1147
movzx eax, byte [eax + 0x4218b0]
jmp dword [eax*4 + 0x421874]
push ebx
push dword [ebp + 0x10]
mov byte [ebp - 0x2ae4], 0
push dword [ebp - 0x2ae4]
push edi
call fcn.00414570
add esp, 0x10
xor eax, eax
jmp 0x421853
push ebx
push dword [ebp + 0x10]
mov byte [ebp - 0x2ad4], 0
push dword [ebp - 0x2ad4]
push edi
call fcn.00414650
add esp, 0x10
xor eax, eax
jmp 0x421853
push ebx
mov ecx, edi
call fcn.004183c0
xor eax, eax
jmp 0x421853
mov ecx, edi
call fcn.00418720
xor eax, eax
jmp 0x421853
mov ecx, edi
call fcn.004189a0
xor eax, eax
jmp 0x421853
push ebx
mov ecx, edi
call fcn.004193b0
xor eax, eax
jmp 0x421853
push ebx
mov ecx, edi
call fcn.00418c60
xor eax, eax
jmp 0x421853
push 1
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_ShowWindow]
xor eax, eax
jmp 0x421853
mov esi, dword [ebp + 0x10]
push ebx
push esi
push str.WM_USER_DLER_INIT_RESULT___d___d_
call fcn.00413860
mov ebx, dword [edi + 0xd55c]
add esp, 0xc
test ebx, ebx
je 0x420d91
mov ecx, ebx
call fcn.00411150
push ebx
call fcn.00486409
add esp, 4
mov dword [edi + 0xd55c], 0
cmp byte [edi + 0xd534], 0
jne 0x42180f
dec esi
jne 0x421049
xor eax, eax
push 0x62
push eax
mov word [ebp - 0x74], ax
lea eax, [ebp - 0x72]
push eax
call fcn.004866f0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x81c], ax
lea eax, [ebp - 0x81a]
push eax
call fcn.004866f0
push 0x400
push 0x32
lea eax, [ebp - 0x74]
push eax
push 0x198
push dword [edi + 4]
call fcn.00412610
push 0x400
push 0x104
lea eax, [ebp - 0x81c]
push eax
push 0xdc
push dword [edi + 4]
call fcn.00412610
lea eax, [ebp - 0x81c]
add esp, 0x40
mov dword [ebp - 0x2b18], eax
lea eax, [ebp - 0x74]
push esi
mov ecx, edi
mov dword [ebp - 0x2b14], eax
mov dword [ebp - 0x2b10], esi
mov dword [ebp - 0x2b0c], esi
mov dword [ebp - 0x2b08], esi
mov dword [ebp - 0x2b04], esi
mov dword [ebp - 0x2b00], esi
mov dword [ebp - 0x2afc], esi
mov dword [ebp - 0x2af8], esi
call fcn.00419eb0
push eax
lea eax, [ebp - 0x2b18]
push eax
push esi
lea ecx, [ebp - 0x1d84]
call fcn.004092f0
lea ecx, [ebp - 0x1d84]
mov dword [ebp - 4], esi
call fcn.00409af0
mov ecx, edi
call fcn.004196d0
lea ecx, [ebp - 0x1d84]
mov dword [ebp - 4], 0xffffffff
call fcn.004098d0
xor eax, eax
jmp 0x421853
push ebx
push dword [ebp + 0x10]
push str.WM_USER_DLER_PPTASK_RESULT___d___d_
call fcn.00413860
mov esi, dword [edi + 0xd560]
add esp, 0xc
test esi, esi
je 0x420ec9
mov ecx, esi
call fcn.00411150
push esi
call fcn.00486409
add esp, 4
mov dword [edi + 0xd560], 0
cmp byte [edi + 0xd534], 0
je 0x420ee0
mov ecx, edi
call fcn.004196d0
xor eax, eax
jmp 0x421853
mov eax, dword [ebp + 0x10]
dec eax
cmp eax, 5
ja case.0x420ee9.4
jmp dword [eax*4 + 0x421944]
push ebx
mov ecx, edi
call fcn.00419190
xor eax, eax
jmp 0x421853
push ebx
push 0
push 0x476
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
jmp 0x421853
push ebx
push 0
push 0x475
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
jmp 0x421853
mov ecx, edi
call fcn.00418100
mov ecx, edi
test eax, eax
js 0x420ed4
call fcn.004155e0
mov ecx, edi
call fcn.00415e90
push 5
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, edi
call fcn.0041c020
test eax, eax
je 0x42180f
mov ecx, edi
call fcn.00420a20
lea eax, [edi + 0x3982]
push eax
lea ecx, [edi + 0xc174]
call fcn.0040d370
push 1
mov ecx, edi
call fcn.004178a0
cmp eax, 0xa0070001
jne 0x42180f
push 1
mov ecx, edi
call fcn.00417e30
xor eax, eax
jmp 0x421853
mov esi, dword [ebp + 0x10]
push ebx
push esi
push str.WM_USER_DLER_DLSTART_RESULT___d___d_
call fcn.00413860
mov eax, dword [edi + 0xd564]
add esp, 0xc
mov dword [ebp - 0x2ad4], eax
test eax, eax
je 0x420fe0
mov ecx, eax
call fcn.00411150
push dword [ebp - 0x2ad4]
call fcn.00486409
add esp, 4
mov dword [edi + 0xd564], 0
cmp byte [edi + 0xd534], 0
jne 0x42180f
cmp ebx, 1
je 0x42103b
mov ecx, dword [edi + 0x69c]
test ecx, ecx
je 0x42103b
call fcn.0040aab0
cmp eax, 0x64
je 0x42103b
mov ecx, dword [edi + 0x69c]
call fcn.0040aab0
push eax
lea eax, [edi + 0x49c2]
push eax
push str.Download_Start__s:__u__
lea eax, [ebp - 0x204]
push 0x63
push eax
call fcn.004146b0
lea eax, [ebp - 0x204]
push eax
call fcn.004010d0
add esp, 0x18
cmp esi, 2
jne 0x421057
cmp ebx, 3
jne 0x4215ed
mov ecx, edi
call fcn.004179c0
xor eax, eax
jmp 0x421853
test esi, esi
je 0x421064
cmp esi, 1
jne 0x4215ed
mov ecx, dword [edi + 0x69c]
mov dword [edi + 0xd554], 0
test ecx, ecx
je 0x42109a
mov eax, dword [edi + 0x698]
push dword [eax + 0x38c]
push dword [eax + 0x388]
call fcn.0040b020
mov ecx, dword [edi + 0x69c]
call fcn.0040ac20
mov al, byte [edi + 0xd530]
mov byte [ebp - 0x2ad0], al
mov eax, dword [edi + 0x698]
mov byte [edi + 0xd530], 0
push dword [eax + 0x38c]
push dword [eax + 0x388]
lea eax, [ebp - 0x103c]
push 0x4a805c
push 0x103
push eax
call fcn.00401690
add esp, 0x14
lea eax, [edi + 0x47ba]
push eax
push 0x104
lea eax, [ebp - 0xa24]
push eax
push 0x4a8ca4
push 0x4a8ca8
push str.Downloader
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, 0x4a8ca4
lea eax, [ebp - 0xa24]
jmp 0x421110
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x421136
test dx, dx
je 0x421132
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x421136
add eax, 4
add ecx, 4
test dx, dx
jne 0x421110
xor eax, eax
jmp 0x42113b
sbb eax, eax
or eax, 1
test eax, eax
je 0x42117c
mov eax, dword [edi + 0x698]
mov esi, dword [eax + 0x388]
mov eax, dword [eax + 0x38c]
mov dword [ebp - 0x2ad4], eax
lea eax, [ebp - 0xa24]
push eax
call fcn.00487284
add esp, 4
cmp esi, eax
jne 0x421172
cmp dword [ebp - 0x2ad4], edx
je 0x421179
mov byte [ebp - 0x2ad0], 1
mov esi, dword [ebp + 0x10]
lea eax, [edi + 0x47ba]
push eax
lea eax, [ebp - 0x103c]
push eax
push 0x4a8ca8
push str.Downloader
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
test esi, esi
jne 0x4215e1
mov ecx, edi
call fcn.0041f500
mov ecx, edi
call fcn.0041f090
movzx eax, byte [edi + 0xd532]
push eax
push 6
mov ecx, edi
call fcn.0041fe00
mov eax, dword [edi + 0x698]
mov ecx, dword [0x4c8068]
mov esi, dword [eax + 0x388]
mov eax, dword [eax + 0x38c]
mov dword [ebp - 0x2ad4], eax
mov eax, ecx
shl eax, 0x16
cdq
mov dword [ebp - 0x2ae4], eax
mov eax, dword [ebp - 0x2ad4]
cmp eax, edx
jg 0x42120f
jl 0x4211ff
cmp esi, dword [ebp - 0x2ae4]
jae 0x42120f
push 0
push 0x400000
push eax
push esi
call fcn.004880a0
mov ecx, eax
push ecx
mov ecx, dword [edi + 0x698]
call fcn.00404200
push dword [ebp - 0x2ad0]
mov ecx, dword [edi + 0x698]
push dword [0x4c8724]
call fcn.00404430
mov esi, eax
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x40c], ax
lea eax, [ebp - 0x40a]
push eax
mov dword [ebp - 0x2ad0], esi
call fcn.004866f0
push esi
push str.MultiBlockDownloader::Start____hResult___.8X
lea eax, [ebp - 0x40c]
push 0x103
push eax
call fcn.00401690
lea eax, [ebp - 0x40c]
push eax
call fcn.004010d0
add esp, 0x20
cmp esi, 0x80070005
je 0x42128b
cmp esi, 0x80070003
jne 0x42129a
mov ecx, edi
call fcn.00418720
mov esi, eax
mov dword [ebp - 0x2ad0], eax
cmp esi, 0x80700007
jne 0x421457
push 0
push esi
push 0x478
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_PostMessageW]
push str.Download_Start___failed_
call fcn.004010d0
push esi
push str.Fail_to_start_download:__x
call fcn.00413860
mov ecx, dword [edi + 0x698]
add esp, 0xc
call fcn.00404c20
push eax
push str.UninitDownload_hr___x
call fcn.00413860
add esp, 8
test esi, esi
jne 0x4215ed
mov ecx, dword [edi + 0x6a4]
test ecx, ecx
je 0x421306
mov eax, dword [ecx]
push 1
call dword [eax]
mov dword [edi + 0x6a4], esi
push 5
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [edi + 0x69c]
test ecx, ecx
je 0x4215b3
mov dword [ebp - 0x2ad0], 0
call fcn.0040ab30
fstp dword [ebp - 0x2ad4]
movss xmm2, dword [ebp - 0x2ad4]
comiss xmm2, dword [0x4acfc4]
jbe 0x4213e3
mov eax, dword [edi + 0x698]
mulss xmm2, dword [0x4a6674]
fild qword [eax + 0x388]
fstp dword [ebp - 0x2ad8]
fld dword [ebp - 0x2ad8]
fstp dword [ebp - 0x2ad8]
movss xmm1, dword [ebp - 0x2ad8]
fild qword [eax + 0x398]
fstp dword [ebp - 0x2ad8]
fld dword [ebp - 0x2ad8]
fstp dword [ebp - 0x2ad8]
movss xmm0, dword [ebp - 0x2ad8]
divss xmm0, xmm2
fnstcw word [ebp - 0x2ace]
movzx eax, word [ebp - 0x2ace]
subss xmm1, xmm0
or eax, 0xc00
movss dword [ebp - 0x2ad8], xmm1
fld dword [ebp - 0x2ad8]
mov dword [ebp - 0x2ad8], eax
fldcw word [ebp - 0x2ad8]
fistp qword [ebp - 0x2adc]
mov eax, dword [ebp - 0x2adc]
fldcw word [ebp - 0x2ace]
mov dword [ebp - 0x2ad0], eax
mov ecx, dword [edi + 0x698]
mov eax, dword [ecx + 0x398]
mov dword [ebp - 0x2af4], eax
mov eax, dword [ecx + 0x39c]
mov ecx, dword [edi + 0x69c]
mov dword [ebp - 0x2af0], eax
lea eax, [ebp - 0x2ad0]
push eax
lea eax, [ebp - 0x2af4]
push eax
call fcn.0040b140
mov ecx, dword [edi + 0x69c]
call fcn.0040aab0
push eax
lea eax, [edi + 0x49c2]
push eax
push str.Download_Start__s:__u__
lea eax, [ebp - 0x13c]
push 0x63
push eax
call fcn.004146b0
add esp, 0x14
lea eax, [ebp - 0x13c]
push eax
call fcn.004010d0
add esp, 4
jmp 0x4215ed
test esi, esi
js 0x4212b7
push 1
call fcn.00413da0
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x614], ax
lea eax, [ebp - 0x612]
push eax
call fcn.004866f0
push 0x400
push 0x104
lea eax, [ebp - 0x614]
push eax
push 0xc8
push dword [edi + 4]
call fcn.00412610
add esp, 0x24
lea eax, [ebp - 0x614]
push eax
lea ecx, [edi + 0xb898]
call fcn.0040d370
push 0
call fcn.00489e18
push 0
mov dword [edi + 0xd508], eax
mov dword [edi + 0xd50c], edx
call fcn.00489e18
mov ecx, dword [edi + 0x698]
mov dword [edi + 0xd510], eax
mov dword [edi + 0xd514], edx
mov eax, dword [ecx + 0x398]
mov dword [edi + 0xd518], eax
mov eax, dword [ecx + 0x39c]
mov ecx, dword [edi + 0x69c]
add esp, 8
mov dword [edi + 0xd51c], eax
lea eax, [edi + 0x47ba]
push eax
call fcn.0040afe0
push 0
push 0x3e8
push 4
push dword [edi + 0xc]
call dword [sym.imp.USER32.dll_SetTimer]
lea eax, [ebp - 0x2aec]
push eax
push 0
push edi
push 0x420730
push 0
push 0
mov dword [ebp - 0x2aec], 0
call fcn.00487a23
add esp, 0x18
lea ecx, [edi + 0x9514]
push 0
call fcn.004089a0
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push 5
lea ecx, [edi + 0x8e54]
call fcn.004089a0
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push 0
lea ecx, [edi + 0x8e54]
call fcn.004089b0
push eax
lea ecx, [edi + 0x8e54]
call fcn.004089a0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
lea ecx, [edi + 0x8e54]
call fcn.004089a0
push eax
call dword [sym.imp.USER32.dll_UpdateWindow]
mov esi, dword [ebp - 0x2ad0]
mov dword [edi + 0xd520], 1
jmp 0x4212e8
lea eax, [edi + 0x49c2]
push eax
push str.Download_Start__s:_0__
lea eax, [ebp - 0x13c]
push 0x63
push eax
call fcn.004146b0
add esp, 0x10
lea eax, [ebp - 0x13c]
push eax
call fcn.004010d0
add esp, 4
jmp 0x4215ed
cmp esi, 1
jne 0x4215ed
mov ecx, edi
call fcn.00420750
cmp ebx, 1
je 0x4215fb
cmp ebx, 2
jne 0x42180f
mov eax, dword [edi + 0x698]
lea ecx, [edi + 0x8e54]
movzx eax, byte [eax + 0x384]
push eax
call fcn.00408960
xor eax, eax
jmp 0x421853
mov ecx, dword [edi + 0x6a4]
test ecx, ecx
je 0x42180f
cmp dword [ebx], 0x322
jne 0x42180f
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, edi
mov dword [edi + 0x6a4], 0
call fcn.00419020
xor eax, eax
jmp 0x421853
push 0x400
push 0x104
lea eax, [ebp - 0xc2c]
push eax
push 0x198
push dword [edi + 4]
call fcn.00412610
push 0x400
push 0x104
lea eax, [ebp - 0xe34]
push eax
push 0xd7
push dword [edi + 4]
call fcn.00412610
lea eax, [ebp - 0xe34]
add esp, 0x28
mov dword [ebp - 0x2b3c], eax
lea eax, [ebp - 0xc2c]
push 0
mov ecx, edi
mov dword [ebp - 0x2b38], eax
mov dword [ebp - 0x2b34], 0
mov dword [ebp - 0x2b30], 0
mov dword [ebp - 0x2b2c], 0
mov dword [ebp - 0x2b28], 0
mov dword [ebp - 0x2b24], 0
mov dword [ebp - 0x2b20], 0
mov dword [ebp - 0x2b1c], 0
call fcn.00419eb0
push eax
lea eax, [ebp - 0x2b3c]
push eax
push 0
lea ecx, [ebp - 0x2acc]
call fcn.004092f0
lea ecx, [ebp - 0x2acc]
mov dword [ebp - 4], 1
call fcn.00409af0
lea ecx, [ebp - 0x2acc]
mov dword [ebp - 4], 0xffffffff
call fcn.004098d0
xor eax, eax
jmp 0x421853
mov eax, dword [ebp + 0x10]
push eax
push str._WndProc__WM_DL_PART_REQUEST_STATUS___all_sessions_returned__count___d
mov dword [ebp - 0x2ae8], 0
mov dword [edi + 0xd550], eax
call fcn.00413860
add esp, 8
cmp dword [edi + 0xd57c], 0
jne 0x421796
push 0x2c
call fcn.004867f5
add esp, 4
mov dword [ebp - 0x2ad8], eax
mov dword [ebp - 4], 2
test eax, eax
je 0x421787
mov ecx, eax
call fcn.00411100
jmp 0x421789
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [edi + 0xd57c], eax
mov eax, dword [edi + 0xd57c]
cmp dword [eax], 0
jne 0x421813
push str._WndProc__WM_DL_PART_REQUEST_STATUS___fire_session_count_thread
call fcn.00413860
mov esi, dword [edi + 0xd57c]
lea eax, [ebp - 0x2ae8]
push eax
push 0
push edi
push 0x419730
push 0
push 0
call fcn.00487a23
mov dword [esi], eax
mov eax, dword [edi + 0xd57c]
add esp, 0x1c
cmp dword [eax], 0
jne 0x421813
push str.CLDownloaderApp::WndProc
push str.__S___beginthreadex_failed
call fcn.00413860
mov esi, dword [edi + 0xd57c]
add esp, 8
test esi, esi
je 0x42180f
mov ecx, esi
call fcn.00411150
push esi
call fcn.00486409
add esp, 4
mov dword [edi + 0xd57c], 0
xor eax, eax
jmp 0x421853
add eax, 0x14
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [edi + 0xd57c]
inc dword [edi + 0xd598]
push dword [eax + 0x10]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [edi + 0xd57c]
add eax, 0x14
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
jmp 0x421853
push ebx
push dword [ebp + 0x10]
push ecx
push edx
mov ecx, edi
call fcn.00409030
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00487c50
mov esp, ebp
pop ebp
ret 0x10