Function at 0x44e552
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a4
mov al, byte [ebp + 0x20]
and byte [ebp + 0x20], 0xf
push ebx
push esi
push edi
push dword [ebp + 0x14]
and al, 0xf0
mov byte [ebp - 1], al
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov eax, 0xb4
cmp ebx, eax
jle 0x44e580
mov ebx, eax
test byte [ebp - 1], 0x80
je 0x44e681
mov esi, 0x4901fc
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
and dword [ebp - 0x2a4], 0
xor eax, eax
mov ecx, 0xa6
lea edi, [ebp - 0x2a0]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x18]
mov edi, dword [ebp + 0x1c]
mov dword [ebp - 0xa8], eax
mov al, byte [ebp + 0x20]
mov byte [ebp - 0xb4], al
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0xb0], eax
lea eax, [ebx + ebx]
push eax
push dword [ebp + 0x14]
lea eax, [ebp - 0x250]
push eax
mov dword [ebp - 0xc0], ebx
mov dword [ebp - 0x254], edi
call fcn.004669c0
and word [ebp + ebx*2 - 0x250], 0
add esp, 0xc
push 0x4901a4
push 0x10000
lea eax, [ebp - 0x2a4]
push eax
push 0x44df9d
push 0x20000
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
mov dword [ebp - 8], eax
je 0x44e65d
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp + 0x20], 0x270f
cmp dword [ebp - 0x254], edi
jne 0x44e654
push 0
call ebx
dec dword [ebp + 0x20]
jns 0x44e635
jmp 0x44e64c
push 1
call ebx
cmp dword [ebp - 0x254], edi
je 0x44e648
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.__LastTID
push dword [0x4901a4]
push dword [ebp + 8]
call fcn.0042cc8f
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
jmp 0x44e7bd
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov esi, eax
mov al, byte [ebp - 1]
and al, 0x40
mov byte [ebp - 1], al
jne 0x44e69d
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x44e69d
mov esi, dword [eax + 0x18]
push 0x294
call fcn.004669a8
test eax, eax
pop ecx
je 0x44e6bd
push 0x2720
push esi
mov ecx, eax
call fcn.0040107f
mov esi, eax
jmp 0x44e6bf
xor esi, esi
mov eax, dword [ebp + 0x18]
push dword [ebp + 0x10]
lea edi, [esi + 0x1e8]
mov ecx, edi
mov dword [esi + 0x1e4], ebx
mov dword [esi + 0x1fc], eax
call fcn.004346c9
mov eax, dword [ebp + 0x1c]
mov dword [esi + 0x50], eax
mov al, byte [ebp + 0x20]
mov byte [esi + 0x1f0], al
mov eax, dword [edi]
mov dword [esi + 0x1ec], eax
mov eax, dword [ebp + 0x24]
mov dword [esi + 0x1f4], eax
lea eax, [ebx + ebx]
push eax
push dword [ebp + 0x14]
lea eax, [esi + 0x54]
push eax
call fcn.004669c0
and word [esi + ebx*2 + 0x54], 0
mov ebx, dword [ebp + 0xc]
add esp, 0xc
test ebx, ebx
mov edi, 0x49062c
je 0x44e737
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
inc dword [ebx + 0x94]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call fcn.0042a75d
test ebx, ebx
pop ecx
je 0x44e74b
push dword [ebx + 0x18]
call dword [sym.imp.USER32.dll_SetFocus]
cmp byte [ebp - 1], 0
mov byte [esi + 0x4d], 0
mov byte [esi + 0x4c], 0
mov ecx, esi
je 0x44e773
mov eax, dword [esi]
push 0
push 0
mov byte [esi + 0x4c], 0x10
call dword [eax + 8]
push 0
mov ecx, esi
call fcn.004341f0
jmp 0x44e778
call fcn.00434327
test ebx, ebx
mov eax, dword [esi + 0x200]
mov dword [ebp + 0x20], eax
je 0x44e7b1
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
dec dword [ebx + 0x94]
cmp byte [ebx + 0x4d], 0x81
je 0x44e7aa
push 0
push 0
push 0x43d
push dword [ebx + 0x18]
call dword [sym.imp.USER32.dll_PostMessageW]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0xc]
mov eax, dword [ebp + 0x20]
pop edi
pop esi
pop ebx
leave
ret