Function at 0x4020d0
Capabilities:
Create thread

Disassembly:
sub esp, 0x888
mov eax, dword [0x42f5ac]
xor eax, esp
mov dword [esp + 0x884], eax
push ebp
push esi
push edi
mov edi, dword [esp + 0x898]
push 0xffffffffffffffeb
xor ebp, ebp
push edi
mov dword [esp + 0x14], ebp
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov esi, dword [eax]
mov eax, dword [esp + 0x8a0]
mov eax, dword [eax + 8]
cmp eax, 0xffffff31
je 0x402304
push ebx
cmp eax, 0xffffff35
je 0x4021d1
cmp eax, 0xffffff38
jne 0x4021b6
mov edx, dword [0x4308e0]
push 0x80
lea ecx, [esp + 0x18]
push ecx
push 0x83
push edx
call dword [sym.imp.USER32.dll_LoadStringA]
mov ebx, dword [sym.imp.USER32.dll_GetParent]
lea eax, [esp + 0x14]
push eax
push 0x3024
push edi
call ebx
push eax
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
cmp dword [esi + 4], ebp
jne 0x4021b6
push ebp
push ebp
push 0x470
push edi
call ebx
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateEventA]
push ebp
push ebp
push ebp
push ebp
call ebx
push ebp
push ebp
push ebp
push ebp
mov dword [esi + 8], eax
call ebx
push ebp
push ebp
push ebp
push ebp
mov dword [esi + 0xc], eax
call ebx
lea ecx, [esp + 0x10]
push ecx
push ebp
push edi
push 0x4016b0
push ebp
push ebp
mov dword [esi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov dword [esi + 4], eax
mov eax, ebp
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x884]
xor ecx, esp
call fcn.004107c5
add esp, 0x888
ret
cmp dword [esi + 0x14], ebp
jne 0x4021b6
mov edx, dword [esi + 4]
push ebp
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x4022e1
mov ecx, dword [0x4308e0]
mov ebx, dword [sym.imp.USER32.dll_LoadStringA]
push 0x400
lea eax, [esp + 0x98]
push eax
push 0x92
push ecx
call ebx
mov eax, dword [0x4308e0]
push 0x400
lea edx, [esp + 0x498]
push edx
push 0x93
push eax
call ebx
push ebp
push ebp
lea ecx, [esi + 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
je 0x4022be
push str.download_OnNotify_:_Can_Cancel_n
push 5
call fcn.0040cf80
mov edx, dword [esi + 8]
mov ebx, dword [sym.imp.KERNEL32.dll_SetEvent]
add esp, 8
push edx
call ebx
push 4
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x49c]
push ecx
push edi
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp eax, 6
jne 0x4022a4
mov edx, dword [esi + 0xc]
push edx
call ebx
push 4
push ebp
push 0x470
push edi
call dword [sym.imp.USER32.dll_GetParent]
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
push 0xffffffffffffffff
push ebp
push edi
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, 1
jmp 0x4021b8
mov eax, dword [esi + 0x10]
push eax
call ebx
push 0xffffffffffffffff
push ebp
push edi
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, 1
jmp 0x4021b8
push 0x42650c
push 5
call fcn.0040cf80
add esp, 8
push 0xffffffffffffffff
push ebp
push edi
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, 1
jmp 0x4021b8
mov ecx, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call edi
mov edx, dword [esi + 8]
push edx
call edi
mov eax, dword [esi + 0xc]
push eax
call edi
mov ecx, dword [esi + 0x10]
push ecx
call edi
jmp 0x4021b6
mov edx, dword [esi + 4]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edx
call edi
mov eax, dword [esi + 8]
push eax
call edi
mov ecx, dword [esi + 0xc]
push ecx
call edi
mov edx, dword [esi + 0x10]
push edx
call edi
mov ecx, dword [esp + 0x890]
pop edi
mov dword [esi + 0x14], 1
pop esi
mov eax, ebp
pop ebp
xor ecx, esp
call fcn.004107c5
add esp, 0x888
ret