Function at 0x40a720
Capabilities:
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 8
push ebx
push ebp
push esi
mov esi, ecx
push edi
mov edi, esi
call fcn.0040abb0
mov eax, dword [esi + 0xf4]
test eax, eax
lea ebx, [esi + 0xf0]
je 0x40a754
mov ecx, dword [ebx + 8]
sub ecx, eax
sar ecx, 2
jne 0x40a82e
mov eax, dword [esi + 0xcc]
test eax, eax
mov ebx, dword [sym.imp.USER32.dll_ShowWindow]
mov ebp, dword [sym.imp.USER32.dll_PostMessageW]
mov dword [esi + 0xb8], 0
je 0x40a7a2
mov ecx, dword [eax + 0xb8]
test ecx, ecx
je 0x40a7a2
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
mov edi, eax
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
push 0
push edx
call ebx
mov eax, dword [edi]
mov ecx, dword [eax + 4]
push 0
push 0
push 0x402
push ecx
call ebp
mov eax, dword [0x45f940]
test eax, eax
je 0x40a7d2
mov edx, dword [eax]
mov edi, eax
mov eax, dword [edx + 4]
push 0
push eax
call ebx
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
push 0
push 0
push 0x402
push edx
call ebp
mov dword [0x45f940], 0
mov ecx, dword [esi + 0xcc]
test ecx, ecx
je 0x40a81b
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
test eax, eax
je 0x40a81b
mov ecx, dword [esi + 0xcc]
mov eax, dword [ecx]
mov edx, dword [eax + 8]
call edx
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [eax + 4]
push 0
push ecx
call ebx
mov edx, dword [edi]
mov eax, dword [edx + 4]
push 0
push 0
push 0x402
push eax
call ebp
mov dword [esi + 0xcc], 0
xor eax, eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], eax
jmp 0x40a8e0
mov edi, dword [ebx + 8]
cmp eax, edi
jbe 0x40a83b
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
lea eax, [edi - 4]
cmp eax, dword [ebx + 8]
mov dword [esp + 0x14], edi
ja 0x40a84c
cmp eax, dword [ebx + 4]
jae 0x40a852
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
add edi, 0xfffffffc
cmp edi, dword [ebx + 8]
jb 0x40a860
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov ecx, dword [edi]
test ecx, ecx
je 0x40a86e
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov eax, dword [ebx + 4]
test eax, eax
jne 0x40a879
xor edi, edi
jmp 0x40a881
mov edi, dword [ebx + 8]
sub edi, eax
sar edi, 2
mov ebp, eax
cmp ebp, dword [ebx + 8]
jbe 0x40a88e
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
lea edi, [ebp + edi*4]
cmp edi, dword [ebx + 8]
mov dword [esp + 0x14], ebp
ja 0x40a8a0
cmp edi, dword [ebx + 4]
jae 0x40a8a6
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
lea eax, [edi - 4]
cmp eax, dword [ebx + 8]
ja 0x40a8b3
cmp eax, dword [ebx + 4]
jae 0x40a8b9
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [ebx + 8]
lea ecx, [edi - 4]
lea edx, [ecx + 4]
sub eax, edx
sar eax, 2
test eax, eax
jle 0x40a8dc
add eax, eax
add eax, eax
push eax
push edx
push eax
push ecx
call dword [sym.imp.MSVCR80.dll_memmove_s]
add esp, 0x10
add dword [ebx + 8], 0xfffffffc
xor eax, eax
push eax
push eax
push eax
call fcn.00407db0
lea ecx, [esp + 0x10]
push ecx
mov ecx, str.recover
call fcn.0040c420
lea edx, [esp + 0x10]
push edx
lea eax, [esi + 0x150]
call fcn.00443c30
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40a929
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret