Function at 0x44f7f0
Capabilities:
Resume thread
Suspend thread

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x35
push 0
push 0
dec ecx
jne 0x44f7f9
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov esi, dword [ebp + 0x14]
lea edi, [ebp - 0x18]
push ecx
mov ecx, 6
rep movsd dword es:[edi], dword [esi]
pop ecx
mov ebx, ecx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], eax
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x18]
mov edx, dword [0x437f60]
call fcn.00405884
xor eax, eax
push ebp
push 0x4505e5
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.0043c0b0
test al, al
je 0x44f870
cmp byte [0x4d66bc], 0
je 0x44f870
cmp dword [0x4d66b4], 0
jne 0x44f870
mov eax, dword [0x4d47d0]
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
jne 0x44f870
mov byte [ebp - 0x8d], 1
jmp 0x450571
mov byte [ebp - 0x8d], 0
call fcn.0040ba3c
fstp qword [0x4d6768]
wait
mov eax, dword [ebp - 0x20]
mov dword [0x4d0a0c], eax
mov eax, 0x4d672c
call fcn.00404c88
mov dword [0x4d6770], 1
xor eax, eax
push ebp
push 0x45054c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00407128
mov byte [eax + 0xe9], 1
mov ecx, dword [0x4d6630]
mov dl, 1
mov eax, dword [0x437e98]
call fcn.004523dc
mov dword [ebp - 0x60], eax
xor eax, eax
push ebp
push 0x45053b
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x1c], 0
je 0x44f8ea
mov eax, dword [ebp - 0x1c]
mov dword [0x4d66e4], eax
test bl, bl
je 0x44f8fd
cmp dword [ebp - 0x1c], 0
je 0x44f8fd
mov eax, dword [ebp - 0x1c]
sub eax, 5
mov dword [ebp - 0x1c], eax
call fcn.0044f644
cmp esi, dword [0x4d5668]
je 0x44f912
mov ebx, dword [0x4d5668]
jmp 0x44f91a
mov ebx, dword [0x4d4470]
mov ebx, dword [ebx]
mov eax, dword [ebp - 0x1c]
mov dword [0x4d68d4], eax
mov eax, dword [ebp - 0x20]
mov dword [0x4d68d0], eax
mov eax, dword [ebp - 0xc]
mov dword [0x4d68d8], eax
xor eax, eax
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x1c], 0
je 0x44f958
mov dword [0x4d6770], 0x65
mov eax, dword [ebp - 0x1c]
call fcn.0043b258
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0
je 0x44f96d
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x44f9b4
mov dword [0x4d6770], 0x66
mov eax, esi
call fcn.0043b194
mov dword [ebp - 0x9c], eax
mov dword [0x4d6770], 0x67
cmp dword [ebp - 0x9c], 0
je 0x44f9a7
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x44f9b4
test ebx, ebx
je 0x44f9b4
mov eax, ebx
call fcn.0043b194
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 0x23]
mov eax, dword [0x4d6640]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [0x4d6640]
test byte [eax + 0x205], 0x10
je 0x44fa28
test ebx, ebx
je 0x44fa28
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0xa0], eax
mov eax, ebx
call fcn.0043b194
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0
je 0x44fa07
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x44fa15
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x9c], eax
jmp 0x44fa28
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 0x23]
mov eax, dword [0x4d6640]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov dword [0x4d6770], 0x68
call fcn.0042496c
test al, al
je 0x44fa58
mov eax, dword [0x4d6640]
mov dl, byte [0x4505fc]
not edx
and dl, byte [eax + 0x1e8]
mov eax, dword [0x4d6640]
call fcn.00426aec
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 4]
mov eax, dword [0x4d6640]
call fcn.00426868
mov eax, dword [0x4d6640]
cmp byte [eax + 0x1e0], 0
jne 0x44fa8b
mov eax, dword [0x4d6640]
cmp byte [eax + 0x1e1], 0
jne 0x44fa8b
xor eax, eax
jmp 0x44fa8d
mov al, 1
mov byte [0x4d670c], al
mov eax, dword [0x4d6640]
test byte [eax + 0x1c2], 0x10
setne al
mov byte [0x4d670d], al
push ebp
call fcn.0044f5e8
pop ecx
test al, al
je 0x44fab6
call fcn.00440fd8
mov dword [0x4d6770], 2
xor ebx, ebx
cmp byte [ebp + 8], 2
je 0x44fb71
mov eax, dword [0x4d6640]
cmp byte [eax + 0x1bd], 0
je 0x44fb71
push ebp
call fcn.0044cc00
pop ecx
mov dword [ebp - 0x94], eax
mov dword [0x4d6770], 0xc9
cmp dword [ebp - 0x94], 0xffffffff
je 0x44fb71
lea ecx, [ebp - 0x178]
mov eax, dword [0x4d6640]
mov eax, dword [eax + 0x38]
mov edx, dword [ebp - 0x94]
mov ebx, dword [eax]
call dword [ebx + 0xc]
cmp dword [ebp - 0x178], 0
je 0x44fb6f
push 0x242040
lea ecx, [ebp - 0x17c]
xor edx, edx
mov eax, dword [0x4d6640]
call fcn.00425558
mov eax, dword [ebp - 0x17c]
call fcn.00405164
push eax
lea ecx, [ebp - 0x180]
mov eax, dword [0x4d6640]
mov eax, dword [eax + 0x38]
mov edx, dword [ebp - 0x94]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x180]
call fcn.00405164
push eax
push 0
call sub.user32.dll_MessageBoxA_1
mov bl, 1
mov dword [0x4d6770], 3
test bl, bl
jne 0x4504ed
cmp dword [ebp - 0x14], 0
jne 0x44fb91
call fcn.004399ac
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x10], 0
jne 0x44fba5
call fcn.00407128
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x18], 0
jne 0x44fbc7
call fcn.00407128
cmp dword [eax + 0x1c], 0
je 0x44fbc7
call fcn.00407128
lea eax, [eax + 0x1c]
mov dword [ebp - 0x18], eax
mov edx, 0xcc
mov eax, dword [ebp - 0x18]
call fcn.0042420c
test al, al
jne 0x44fbdd
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc]
mov dword [0x4d66e8], eax
mov dword [0x4d6770], 4
mov edx, dword [ebp - 0x1c]
add edx, 5
mov eax, dword [0x4d6718]
call fcn.0043f97c
test al, al
jne 0x44feaa
cmp dword [0x4d09fc], 0
je 0x44fc1a
mov eax, dword [0x4d09fc]
call fcn.00403d94
mov eax, dword [ebp - 0xc]
push eax
push 1
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov al, byte [0x450600]
push eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
call fcn.00440f88
mov dword [0x4d09fc], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x60]
call fcn.00452634
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0xffffffff
je 0x44fc6c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f6e4
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x44fd18
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x44fd06
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f758
test al, al
je 0x44fd06
mov eax, dword [0x4d6630]
call fcn.00452698
xor eax, eax
push ebp
push 0x44fcff
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_SuspendThread
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x44fd06
mov eax, dword [0x4d6630]
call fcn.004526a4
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x44fc8c
xor eax, eax
push ebp
push 0x44fea3
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x44fe28
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x44fe16
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f758
test al, al
je 0x44fe16
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x174]
xor ecx, ecx
mov edx, 0xcc
call fcn.00403620
mov dword [ebp - 0x174], 0x10007
lea eax, [ebp - 0x174]
push eax
mov eax, dword [ebp - 0x98]
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_GetThreadContext
test eax, eax
je 0x44fe16
cmp dword [ebp - 0xbc], 0
je 0x44fe16
cmp dword [ebp - 0xb0], 0
je 0x44fe16
mov eax, dword [ebp - 0x98]
mov eax, dword [eax + 0x14]
push eax
mov eax, dword [ebp - 0x98]
mov eax, dword [eax]
push eax
push 1
push 1
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov al, byte [0x450600]
push eax
mov ecx, dword [ebp - 0xb0]
xor edx, edx
mov eax, dword [0x4d09fc]
call fcn.00440c90
mov eax, dword [ebp - 0x98]
call fcn.0044f6e4
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x44fd46
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x44feaa
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x44fea2
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x44fe94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f758
test al, al
je 0x44fe94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x44fe51
ret
mov dword [0x4d6770], 5
cmp byte [ebp + 8], 2
je 0x4504ed
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x44ff83
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x44ff71
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x44ff71
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f798
test al, al
je 0x44ff71
mov eax, dword [0x4d6630]
call fcn.00452698
xor eax, eax
push ebp
push 0x44ff6a
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_SuspendThread
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x44ff71
mov eax, dword [0x4d6630]
call fcn.004526a4
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x44fede
xor eax, eax
push ebp
push 0x4504bd
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [0x4d6770], 6
mov byte [0x4d68b2], 1
mov eax, dword [0x4d6640]
test byte [eax + 0x1c1], 0x10
je 0x44ffb5
call fcn.0043bbb0
mov dword [0x4d6770], 7
mov eax, dword [0x4d09fc]
mov dword [0x4d68e4], eax
mov eax, dword [0x4d6640]
mov dword [0x4d68e8], eax
mov dword [0x4d6770], 0x2be
push ebp
call fcn.0044dc38
pop ecx
mov eax, 0x4d68dc
mov edx, dword [0x4d6700]
call fcn.00404cdc
mov dword [0x4d6770], 0x2bf
mov eax, dword [0x4d09f8]
mov dword [0x4d68e0], eax
mov dword [0x4d6770], 0x2c0
mov dword [0x4d66fc], 0x4d68d0
call fcn.0043e134
mov dword [0x4d6770], 0x2c1
call fcn.0043ad38
mov dword [0x4d6770], 0x2c2
call fcn.004478bc
call fcn.0043be74
test al, al
je 0x450074
lea eax, [ebp - 0x188]
call fcn.0043e574
mov eax, dword [ebp - 0x188]
lea edx, [ebp - 0x184]
call fcn.0043e870
mov edx, dword [ebp - 0x184]
mov eax, 0x4d66a4
call fcn.00404cdc
mov eax, 0x4d6b80
mov edx, dword [0x4d66a4]
call fcn.00404cdc
mov eax, 0x43eaf4
call fcn.0043f8e0
mov dword [0x4d6770], 8
cmp byte [0x4d68b2], 0
je 0x450422
mov eax, dword [0x4d6640]
test byte [eax + 0x205], 1
je 0x4500fe
call fcn.0040ba3c
add esp, 0xfffffff8
fstp qword [esp]
wait
lea eax, [ebp - 0x18c]
call fcn.0040c6d0
mov edx, dword [ebp - 0x18c]
mov eax, dword [0x4d6764]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [0x4d6764]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x4d6640]
cmp eax, dword [edx + 0x1fc]
jle 0x4500fe
xor edx, edx
mov eax, dword [0x4d6764]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, 0x4d68fc
call fcn.00404c88
mov eax, 0x43ef5c
call fcn.0043f8e0
cmp dword [0x4d68fc], 0
je 0x450143
lea ecx, [ebp - 0x190]
mov dl, 0xd
mov eax, dword [0x4d6640]
call fcn.00425558
mov edx, dword [ebp - 0x190]
mov ecx, dword [0x4d68fc]
mov eax, 6
call fcn.004418cc
mov dword [0x4d6770], 9
inc dword [0x4d664c]
mov dword [0x4d6770], 0xa
push ebp
lea eax, [ebp - 0x198]
call fcn.0044b940
pop ecx
mov eax, dword [ebp - 0x198]
lea edx, [ebp - 0x194]
call fcn.0044b000
mov edx, dword [ebp - 0x194]
mov eax, 0x4d66f4
call fcn.00404cdc
mov dword [0x4d6770], 0xb
mov eax, dword [0x4d6640]
test byte [eax + 0x1e8], 1
je 0x4502cc
mov dword [0x4d6770], 0xc
mov byte [0x4d68b1], 1
call fcn.0043ad38
mov eax, 0x44cc88
call fcn.0043f8e0
cmp byte [0x4d68b1], 0
je 0x4502ed
mov dword [0x4d6770], 0xd
mov al, byte [ebp + 0x10]
call fcn.0044f69c
sub al, 1
jb 0x450275
je 0x450209
dec al
jne 0x4502b6
push ebp
mov eax, dword [0x4d6700]
call fcn.0044f404
pop ecx
jmp 0x4502b6
xor eax, eax
push ebp
push 0x450256
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x19c]
mov ecx, dword [0x4d6700]
mov edx, dword [ebp - 0x2c]
call fcn.00404fb0
mov edx, dword [ebp - 0x19c]
mov eax, dword [0x4d4444]
call fcn.00405354
call fcn.00403844
call fcn.00402c9c
mov byte [0x4d68b1], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4502b6
xor eax, eax
push ebp
push 0x450299
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00446b84
mov byte [0x4d68b1], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4502b6
mov dword [0x4d6770], 0xe
mov eax, 0x44ccac
call fcn.0043f8e0
jmp 0x4502ed
call fcn.0043c0bc
test al, al
je 0x4502ed
push ebp
lea eax, [ebp - 0x1a0]
call fcn.00441060
mov eax, dword [ebp - 0x1a0]
call fcn.0044f404
pop ecx
call fcn.00441f50
call fcn.0044f5a4
test al, al
je 0x450311
lea eax, [ebp - 0x1a4]
call fcn.0043e3dc
mov eax, dword [ebp - 0x1a4]
call fcn.00447fa4
call fcn.00448034
mov dword [0x4d6770], 0xf
mov eax, dword [0x4d6640]
test byte [eax + 0x1c1], 4
je 0x4503c6
call fcn.0043e064
xor eax, eax
push ebp
push 0x45037b
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xa4]
push eax
mov eax, dword [0x4d6918]
call fcn.00434104
mov ecx, eax
dec ecx
mov edx, 0x450628
mov eax, dword [0x4d6918]
call fcn.00433ee0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x450382
call fcn.0043e118
ret
mov eax, dword [0x4d6640]
cmp byte [eax + 0x1c0], 0
je 0x4503d9
call fcn.0044ca98
cmp byte [0x4d670e], 0
je 0x4503ec
mov eax, dword [0x4d6700]
call fcn.0043af98
mov dword [0x4d6770], 0x10
call fcn.0044f5a4
test al, al
je 0x450404
call fcn.0044ae54
call fcn.0044f5a4
test al, al
je 0x45041b
mov eax, dword [0x4d6640]
test byte [eax + 0x1c2], 0x80
jne 0x450429
call fcn.0044ae90
jmp 0x450429
mov byte [ebp - 0x8d], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4504c7
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x4504bc
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x4504ae
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4504ae
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
call fcn.0044f798
test al, al
je 0x4504ae
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.00452664
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x450452
ret
mov dword [0x4d6770], 0x12
cmp byte [ebp + 8], 2
je 0x450519
call fcn.0044f5a4
test al, al
je 0x450514
mov eax, dword [0x4d6640]
test byte [eax + 0x1c2], 0x80
jne 0x450519
call fcn.0044af94
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x450542
mov eax, dword [ebp - 0x60]
call fcn.00403d94
call fcn.00407128
mov byte [eax + 0xe9], 0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4505ec
lea eax, [ebp - 0x1b0]
mov edx, 0xf
call fcn.00404cac
lea eax, [ebp - 0xa4]
call fcn.00404c88
lea eax, [ebp - 0x8c]
call fcn.00404c88
lea eax, [ebp - 0x6c]
call fcn.00404c88
lea eax, [ebp - 0x5c]
call fcn.00404c88
lea eax, [ebp - 0x54]
mov edx, 3
call fcn.00404cac
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.00404cac
lea eax, [ebp - 0x24]
call fcn.00404c88
lea eax, [ebp - 0x18]
mov edx, dword [0x437f60]
call fcn.00405740
ret