Function at 0x45765c
Capabilities:
Resume thread
Suspend thread

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x35
push 0
push 0
dec ecx
jne 0x457665
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 [0x43fad0]
call fcn.00406064
xor eax, eax
push ebp
push 0x45849e
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00443c7c
test al, al
je 0x4576dc
cmp byte [0x56f8e4], 0
je 0x4576dc
cmp dword [0x56f8dc], 0
jne 0x4576dc
mov eax, dword [0x56b21c]
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
jne 0x4576dc
mov byte [ebp - 0x8d], 1
jmp 0x45842a
mov byte [ebp - 0x8d], 0
call fcn.0040f230
fstp qword [0x56f990]
wait
mov eax, dword [ebp - 0x20]
mov dword [0x558298], eax
mov eax, 0x56f954
call fcn.0040539c
mov byte [ebp - 0x8e], 0
mov dword [0x56f998], 1
xor eax, eax
push ebp
push 0x458405
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.004078d4
mov byte [eax + 0xe9], 1
mov ecx, dword [0x56f858]
mov dl, 1
mov eax, dword [0x43fa08]
call fcn.0045a2f4
mov dword [ebp - 0x60], eax
xor eax, eax
push ebp
push 0x4583f4
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x1c], 0
je 0x45775d
mov eax, dword [ebp - 0x1c]
mov dword [0x56f90c], eax
test bl, bl
je 0x457770
cmp dword [ebp - 0x1c], 0
je 0x457770
mov eax, dword [ebp - 0x1c]
sub eax, 5
mov dword [ebp - 0x1c], eax
call fcn.004574b0
cmp esi, dword [0x56c668]
je 0x457785
mov ebx, dword [0x56c668]
jmp 0x45778d
mov ebx, dword [0x56aaf4]
mov ebx, dword [ebx]
mov eax, dword [ebp - 0x1c]
mov dword [0x56fafc], eax
mov eax, dword [ebp - 0x20]
mov dword [0x56faf8], eax
mov eax, dword [ebp - 0xc]
mov dword [0x56fb00], eax
xor eax, eax
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x1c], 0
je 0x4577cb
mov dword [0x56f998], 0x65
mov eax, dword [ebp - 0x1c]
call fcn.00442e24
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0
je 0x4577e0
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x457827
mov dword [0x56f998], 0x66
mov eax, esi
call fcn.00442d60
mov dword [ebp - 0x9c], eax
mov dword [0x56f998], 0x67
cmp dword [ebp - 0x9c], 0
je 0x45781a
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x457827
test ebx, ebx
je 0x457827
mov eax, ebx
call fcn.00442d60
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 0x23]
mov eax, dword [0x56f868]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [0x56f868]
test byte [eax + 0x205], 0x10
je 0x45789b
test ebx, ebx
je 0x45789b
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0xa0], eax
mov eax, ebx
call fcn.00442d60
mov dword [ebp - 0x9c], eax
cmp dword [ebp - 0x9c], 0
je 0x45787a
mov eax, dword [ebp - 0x9c]
cmp dword [eax + 0x27], 0
jne 0x457888
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x9c], eax
jmp 0x45789b
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 0x23]
mov eax, dword [0x56f868]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov dword [0x56f998], 0x68
call fcn.0042be70
test al, al
je 0x4578cb
mov eax, dword [0x56f868]
mov dl, byte [0x4584b4]
not edx
and dl, byte [eax + 0x1e8]
mov eax, dword [0x56f868]
call fcn.0042dff0
mov eax, dword [ebp - 0x9c]
mov edx, dword [eax + 4]
mov eax, dword [0x56f868]
call fcn.0042dd6c
mov dword [0x56f998], 2
xor ebx, ebx
cmp byte [ebp + 8], 2
je 0x457999
mov eax, dword [0x56f868]
cmp byte [eax + 0x1bd], 0
je 0x457999
push ebp
call fcn.00454a68
pop ecx
mov dword [ebp - 0x94], eax
mov dword [0x56f998], 0xc9
cmp dword [ebp - 0x94], 0xffffffff
je 0x457999
lea ecx, [ebp - 0x178]
mov eax, dword [0x56f868]
mov eax, dword [eax + 0x38]
mov edx, dword [ebp - 0x94]
mov ebx, dword [eax]
call dword [ebx + 0xc]
cmp dword [ebp - 0x178], 0
je 0x457997
push 0x242040
lea ecx, [ebp - 0x17c]
xor edx, edx
mov eax, dword [0x56f868]
call fcn.0042ca5c
mov eax, dword [ebp - 0x17c]
call fcn.00405878
push eax
lea ecx, [ebp - 0x180]
mov eax, dword [0x56f868]
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.00405878
push eax
push 0
call sub.user32.dll_MessageBoxA_1
mov bl, 1
mov dword [0x56f998], 3
test bl, bl
jne 0x4583a6
cmp dword [ebp - 0x14], 0
jne 0x4579b9
call fcn.00441564
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x10], 0
jne 0x4579cd
call fcn.004078d4
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x18], 0
jne 0x4579ef
call fcn.004078d4
cmp dword [eax + 0x1c], 0
je 0x4579ef
call fcn.004078d4
lea eax, [eax + 0x1c]
mov dword [ebp - 0x18], eax
mov edx, 0xcc
mov eax, dword [ebp - 0x18]
call fcn.0042b710
test al, al
jne 0x457a05
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc]
mov dword [0x56f910], eax
mov dword [0x56f998], 4
mov edx, dword [ebp - 0x1c]
add edx, 5
mov eax, dword [0x56f940]
call fcn.004475c8
test al, al
jne 0x457cd2
cmp dword [0x558288], 0
je 0x457a42
mov eax, dword [0x558288]
call fcn.0040444c
mov eax, dword [ebp - 0xc]
push eax
push 1
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov al, byte [0x4584b8]
push eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
call fcn.00448bf8
mov dword [0x558288], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x60]
call fcn.0045a54c
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0xffffffff
je 0x457a94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.00457550
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x457b40
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x457b2e
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.004575c4
test al, al
je 0x457b2e
mov eax, dword [0x56f858]
call fcn.0045a5b0
xor eax, eax
push ebp
push 0x457b27
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
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 0x457b2e
mov eax, dword [0x56f858]
call fcn.0045a5bc
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x457ab4
xor eax, eax
push ebp
push 0x457ccb
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 0x457c50
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x457c3e
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.004575c4
test al, al
je 0x457c3e
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x174]
xor ecx, ecx
mov edx, 0xcc
call fcn.00403ac0
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 0x457c3e
cmp dword [ebp - 0xbc], 0
je 0x457c3e
cmp dword [ebp - 0xb0], 0
je 0x457c3e
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 [0x4584b8]
push eax
mov ecx, dword [ebp - 0xb0]
xor edx, edx
mov eax, dword [0x558288]
call fcn.00448900
mov eax, dword [ebp - 0x98]
call fcn.00457550
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x457b6e
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x457cd2
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x457cca
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x457cbc
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.004575c4
test al, al
je 0x457cbc
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x457c79
ret
mov dword [0x56f998], 5
cmp byte [ebp + 8], 2
je 0x4583a6
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x457dab
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x457d99
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x457d99
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.00457604
test al, al
je 0x457d99
mov eax, dword [0x56f858]
call fcn.0045a5b0
xor eax, eax
push ebp
push 0x457d92
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
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 0x457d99
mov eax, dword [0x56f858]
call fcn.0045a5bc
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x457d06
xor eax, eax
push ebp
push 0x458376
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [0x56f998], 6
mov byte [0x56fada], 1
mov eax, dword [0x56f868]
test byte [eax + 0x1c1], 0x10
je 0x457ddd
call fcn.0044377c
mov dword [0x56f998], 7
mov eax, dword [0x558288]
mov dword [0x56fb0c], eax
mov eax, dword [0x56f868]
mov dword [0x56fb10], eax
mov dword [0x56f998], 0x2be
push ebp
call fcn.00455aa4
pop ecx
mov eax, 0x56fb04
mov edx, dword [0x56f928]
call fcn.004053f0
mov dword [0x56f998], 0x2bf
mov eax, dword [0x558284]
mov dword [0x56fb08], eax
mov dword [0x56f998], 0x2c0
mov dword [0x56f924], 0x56faf8
call fcn.00445ce4
mov dword [0x56f998], 0x2c1
call fcn.00442904
mov dword [0x56f998], 0x2c2
call fcn.0044f634
call fcn.00443a40
test al, al
je 0x457e9c
lea eax, [ebp - 0x188]
call fcn.00446134
mov eax, dword [ebp - 0x188]
lea edx, [ebp - 0x184]
call fcn.00446444
mov edx, dword [ebp - 0x184]
mov eax, 0x56f8cc
call fcn.004053f0
mov eax, 0x56fda8
mov edx, dword [0x56f8cc]
call fcn.004053f0
mov eax, 0x4466e0
call fcn.0044752c
mov dword [0x56f998], 8
cmp byte [0x56fada], 0
je 0x4582db
mov eax, dword [0x56f868]
test byte [eax + 0x205], 1
je 0x457f26
call fcn.0040f230
add esp, 0xfffffff8
fstp qword [esp]
wait
lea eax, [ebp - 0x18c]
call fcn.0040fec4
mov edx, dword [ebp - 0x18c]
mov eax, dword [0x56f98c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [0x56f98c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x56f868]
cmp eax, dword [edx + 0x1fc]
jle 0x457f26
xor edx, edx
mov eax, dword [0x56f98c]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, 0x56fb24
call fcn.0040539c
mov eax, 0x446b48
call fcn.0044752c
cmp dword [0x56fb24], 0
je 0x457f6b
lea ecx, [ebp - 0x190]
mov dl, 0xd
mov eax, dword [0x56f868]
call fcn.0042ca5c
mov edx, dword [ebp - 0x190]
mov ecx, dword [0x56fb24]
mov eax, 6
call fcn.004495a0
mov dword [0x56f998], 9
inc dword [0x56f874]
mov dword [0x56f998], 0xa
push ebp
lea eax, [ebp - 0x198]
call fcn.004537a8
pop ecx
mov eax, dword [ebp - 0x198]
lea edx, [ebp - 0x194]
call fcn.00452e68
mov edx, dword [ebp - 0x194]
mov eax, 0x56f91c
call fcn.004053f0
mov dword [0x56f998], 0xb
mov eax, dword [0x56f868]
test byte [eax + 0x1e8], 1
je 0x45813f
mov dword [0x56f998], 0xc
mov byte [0x56fad9], 1
call fcn.00442904
mov eax, 0x454af0
call fcn.0044752c
mov eax, dword [0x56f868]
cmp byte [eax + 0x1e0], 0
jne 0x45800f
mov eax, dword [0x56f868]
cmp byte [eax + 0x1e1], 0
jne 0x45800f
xor eax, eax
jmp 0x458011
mov al, 1
mov byte [0x56f934], al
mov eax, dword [0x56f868]
test byte [eax + 0x1c2], 0x10
setne al
mov byte [0x56f935], al
push ebp
call fcn.00457454
pop ecx
test al, al
je 0x45803a
call fcn.00448ca8
cmp byte [0x56fad9], 0
je 0x45819b
mov dword [0x56f998], 0xd
mov al, byte [ebp + 0x10]
call fcn.00457508
sub al, 1
jb 0x4580e8
je 0x45807c
dec al
jne 0x458129
push ebp
mov eax, dword [0x56f928]
call fcn.00457270
pop ecx
jmp 0x458129
xor eax, eax
push ebp
push 0x4580c9
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x19c]
mov ecx, dword [0x56f928]
mov edx, dword [ebp - 0x2c]
call fcn.004056c4
mov edx, dword [ebp - 0x19c]
mov eax, dword [0x56aa7c]
call fcn.00405a94
call fcn.00403ed8
call fcn.00402fe8
mov byte [0x56fad9], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x458129
xor eax, eax
push ebp
push 0x45810c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.0044e8a8
mov byte [0x56fad9], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x458129
mov dword [0x56f998], 0xe
mov eax, 0x454b14
call fcn.0044752c
jmp 0x45819b
mov eax, dword [0x56f868]
cmp byte [eax + 0x1e0], 0
jne 0x45815f
mov eax, dword [0x56f868]
cmp byte [eax + 0x1e1], 0
jne 0x45815f
xor eax, eax
jmp 0x458161
mov al, 1
mov byte [0x56f934], al
mov eax, dword [0x56f868]
test byte [eax + 0x1c2], 0x10
setne al
mov byte [0x56f935], al
call fcn.00443c88
test al, al
je 0x45819b
push ebp
lea eax, [ebp - 0x1a0]
call fcn.00448d34
mov eax, dword [ebp - 0x1a0]
call fcn.00457270
pop ecx
call fcn.00449c34
call fcn.00457410
test al, al
je 0x4581bf
lea eax, [ebp - 0x1a4]
call fcn.00445fb4
mov eax, dword [ebp - 0x1a4]
call fcn.0044fd1c
call fcn.0044fdac
mov dword [0x56f998], 0xf
mov eax, dword [0x56f868]
test byte [eax + 0x1c1], 4
je 0x458274
call fcn.00445c14
xor eax, eax
push ebp
push 0x458229
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xa4]
push eax
mov eax, dword [0x56fb40]
call fcn.0043b9b8
mov ecx, eax
dec ecx
mov edx, 0x4584e0
mov eax, dword [0x56fb40]
call fcn.0043b750
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x458230
call fcn.00445cc8
ret
call fcn.00457410
mov byte [ebp - 0x8e], al
mov eax, dword [0x56f868]
cmp byte [eax + 0x1c0], 0
je 0x458292
call fcn.00454900
cmp byte [0x56f936], 0
je 0x4582a5
mov eax, dword [0x56f928]
call fcn.00442b64
mov dword [0x56f998], 0x10
cmp byte [ebp - 0x8e], 0
je 0x4582bd
call fcn.00452ca0
cmp byte [ebp - 0x8e], 0
je 0x4582d4
mov eax, dword [0x56f868]
test byte [eax + 0x1c2], 0x80
jne 0x4582e2
call fcn.00452cec
jmp 0x4582e2
mov byte [ebp - 0x8d], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x458380
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x458375
inc eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x458367
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x458367
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
call fcn.00457604
test al, al
je 0x458367
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.0045a57c
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0xa8]
jne 0x45830b
ret
mov dword [0x56f998], 0x12
cmp byte [ebp + 8], 2
je 0x4583d2
cmp byte [ebp - 0x8e], 0
je 0x4583cd
mov eax, dword [0x56f868]
test byte [eax + 0x1c2], 0x80
jne 0x4583d2
call fcn.00452df0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4583fb
mov eax, dword [ebp - 0x60]
call fcn.0040444c
call fcn.004078d4
mov byte [eax + 0xe9], 0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4584a5
lea eax, [ebp - 0x1b0]
mov edx, 0xf
call fcn.004053c0
lea eax, [ebp - 0xa4]
call fcn.0040539c
lea eax, [ebp - 0x8c]
call fcn.0040539c
lea eax, [ebp - 0x6c]
call fcn.0040539c
lea eax, [ebp - 0x5c]
call fcn.0040539c
lea eax, [ebp - 0x54]
mov edx, 3
call fcn.004053c0
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.004053c0
lea eax, [ebp - 0x24]
call fcn.0040539c
lea eax, [ebp - 0x18]
mov edx, dword [0x43fad0]
call fcn.00405f20
ret