Function at 0x4b49e4
Capabilities:
Resume thread
Suspend thread

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x34
push 0
push 0
dec ecx
jne 0x4b49ed
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 edi, dword [ebp + 0xc]
lea eax, [ebp - 0x18]
mov edx, dword [0x49cfdc]
call fcn.00405868
xor eax, eax
push ebp
push 0x4b57ae
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.004a1168
test al, al
je 0x4b4a63
cmp byte [0x591bb4], 0
je 0x4b4a63
cmp dword [0x591bac], 0
jne 0x4b4a63
mov eax, dword [0x58f240]
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
jne 0x4b4a63
mov byte [ebp - 0x8d], 1
jmp 0x4b573a
mov byte [ebp - 0x8d], 0
call fcn.0040c2cc
fstp qword [0x591c60]
wait
mov eax, dword [ebp - 0x20]
mov dword [0x58c61c], eax
mov eax, 0x591c24
call fcn.00404b20
mov byte [ebp - 0x8e], 0
mov dword [0x591c68], 1
xor eax, eax
push ebp
push 0x4b5715
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.004071b0
mov byte [eax + 0xe9], 1
mov ecx, dword [0x591b28]
mov dl, 1
mov eax, dword [0x49cf14]
call fcn.004b756c
mov dword [ebp - 0x60], eax
xor eax, eax
push ebp
push 0x4b5704
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 0x1c], 0
je 0x4b4ae4
mov eax, dword [ebp - 0x1c]
mov dword [0x591bdc], eax
test bl, bl
je 0x4b4af7
cmp dword [ebp - 0x1c], 0
je 0x4b4af7
mov eax, dword [ebp - 0x1c]
sub eax, 5
mov dword [ebp - 0x1c], eax
call fcn.004b4838
cmp edi, dword [0x590718]
je 0x4b4b0c
mov esi, dword [0x590718]
jmp 0x4b4b14
mov esi, dword [0x58ecd8]
mov esi, dword [esi]
mov eax, dword [ebp - 0x1c]
mov dword [0x591dcc], eax
mov eax, dword [ebp - 0x20]
mov dword [0x591dc8], eax
mov eax, dword [ebp - 0xc]
mov dword [0x591dd0], eax
xor ebx, ebx
cmp dword [ebp - 0x1c], 0
je 0x4b4b48
mov dword [0x591c68], 0x65
mov eax, dword [ebp - 0x1c]
call fcn.004a0320
mov ebx, eax
test ebx, ebx
je 0x4b4b52
cmp dword [ebx + 0x27], 0
jne 0x4b4b86
mov dword [0x591c68], 0x66
mov eax, edi
call fcn.004a0264
mov ebx, eax
mov dword [0x591c68], 0x67
test ebx, ebx
je 0x4b4b7d
cmp dword [ebx + 0x27], 0
jne 0x4b4b86
test esi, esi
je 0x4b4b86
mov eax, esi
call fcn.004a0264
mov ebx, eax
mov edx, dword [ebx + 0x23]
mov eax, dword [0x591b38]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [0x591b38]
test byte [eax + 0x205], 0x10
je 0x4b4bcb
test esi, esi
je 0x4b4bcb
mov edi, ebx
mov eax, esi
call fcn.004a0264
mov ebx, eax
test ebx, ebx
je 0x4b4bba
cmp dword [ebx + 0x27], 0
jne 0x4b4bbe
mov ebx, edi
jmp 0x4b4bcb
mov edx, dword [ebx + 0x23]
mov eax, dword [0x591b38]
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov dword [0x591c68], 0x68
call fcn.00489664
test al, al
je 0x4b4bfb
mov eax, dword [0x591b38]
mov dl, byte [0x4b57c4]
not edx
and dl, byte [eax + 0x1e8]
mov eax, dword [0x591b38]
call fcn.0048b7e4
mov edx, dword [ebx + 4]
mov eax, dword [0x591b38]
call fcn.0048b560
mov dword [0x591c68], 2
xor ebx, ebx
cmp byte [ebp + 8], 2
je 0x4b4cc3
mov eax, dword [0x591b38]
cmp byte [eax + 0x1bd], 0
je 0x4b4cc3
push ebp
call fcn.004b1dfc
pop ecx
mov dword [ebp - 0x94], eax
mov dword [0x591c68], 0xc9
cmp dword [ebp - 0x94], 0xffffffff
je 0x4b4cc3
lea ecx, [ebp - 0x16c]
mov eax, dword [0x591b38]
mov eax, dword [eax + 0x38]
mov edx, dword [ebp - 0x94]
mov ebx, dword [eax]
call dword [ebx + 0xc]
cmp dword [ebp - 0x16c], 0
je 0x4b4cc1
push 0x242040
lea ecx, [ebp - 0x170]
xor edx, edx
mov eax, dword [0x591b38]
call fcn.0048a250
mov eax, dword [ebp - 0x170]
call fcn.00404fec
push eax
lea ecx, [ebp - 0x174]
mov eax, dword [0x591b38]
mov eax, dword [eax + 0x38]
mov edx, dword [ebp - 0x94]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x174]
call fcn.00404fec
push eax
push 0
call sub.user32.dll_MessageBoxA_1
mov bl, 1
mov dword [0x591c68], 3
test bl, bl
jne 0x4b56b6
cmp dword [ebp - 0x14], 0
jne 0x4b4ce3
call fcn.0049ea6c
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x10], 0
jne 0x4b4cf7
call fcn.004071b0
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x18], 0
jne 0x4b4d19
call fcn.004071b0
cmp dword [eax + 0x1c], 0
je 0x4b4d19
call fcn.004071b0
lea eax, [eax + 0x1c]
mov dword [ebp - 0x18], eax
mov edx, 0xcc
mov eax, dword [ebp - 0x18]
call fcn.00488f24
test al, al
jne 0x4b4d2f
xor eax, eax
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0xc]
mov dword [0x591be0], eax
mov dword [0x591c68], 4
mov edx, dword [ebp - 0x1c]
add edx, 5
mov eax, dword [0x591c10]
call fcn.004a49ec
test al, al
jne 0x4b4fe2
cmp dword [0x58c60c], 0
je 0x4b4d6c
mov eax, dword [0x58c60c]
call fcn.00403c4c
mov eax, dword [ebp - 0xc]
push eax
push 1
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov al, byte [0x4b57c8]
push eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
call fcn.004a6000
mov dword [0x58c60c], eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x60]
call fcn.004b77b0
mov dword [ebp - 0x94], eax
cmp dword [ebp - 0x94], 0xffffffff
je 0x4b4dbe
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b48d8
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x4b4e6a
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4b4e58
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b494c
test al, al
je 0x4b4e58
mov eax, dword [0x591b28]
call fcn.004b780c
xor eax, eax
push ebp
push 0x4b4e51
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
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 0x4b4e58
mov eax, dword [0x591b28]
call fcn.004b7818
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0x9c]
jne 0x4b4dde
xor eax, eax
push ebp
push 0x4b4fdb
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 0x4b4f60
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4b4f4e
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b494c
test al, al
je 0x4b4f4e
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov ebx, eax
lea eax, [ebp - 0x168]
xor ecx, ecx
mov edx, 0xcc
call fcn.00403324
mov dword [ebp - 0x168], 0x10007
lea eax, [ebp - 0x168]
push eax
mov eax, dword [ebx + 4]
push eax
call sub.kernel32.dll_GetThreadContext
test eax, eax
je 0x4b4f4e
cmp dword [ebp - 0xb0], 0
je 0x4b4f4e
cmp dword [ebp - 0xa4], 0
je 0x4b4f4e
mov eax, dword [ebx + 0x14]
push eax
mov eax, dword [ebx]
push eax
push 1
push 1
push 1
push 0xffffffffffffffff
push 0xffffffffffffffff
mov al, byte [0x4b57c8]
push eax
mov ecx, dword [ebp - 0xa4]
xor edx, edx
mov eax, dword [0x58c60c]
call fcn.004a5d54
mov eax, ebx
call fcn.004b48d8
inc dword [ebp - 0x94]
dec dword [ebp - 0x9c]
jne 0x4b4e98
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b4fe2
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x4b4fda
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4b4fcc
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b494c
test al, al
je 0x4b4fcc
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0x9c]
jne 0x4b4f89
ret
mov dword [0x591c68], 5
cmp byte [ebp + 8], 2
je 0x4b56b6
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x4b50bb
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x4b50a9
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4b50a9
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b498c
test al, al
je 0x4b50a9
mov eax, dword [0x591b28]
call fcn.004b780c
xor eax, eax
push ebp
push 0x4b50a2
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
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 0x4b50a9
mov eax, dword [0x591b28]
call fcn.004b7818
ret
inc dword [ebp - 0x94]
dec dword [ebp - 0x9c]
jne 0x4b5016
xor eax, eax
push ebp
push 0x4b5686
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [0x591c68], 6
mov byte [0x591daa], 1
mov eax, dword [0x591b38]
test byte [eax + 0x1c1], 0x10
je 0x4b50ed
call fcn.004a0c70
mov dword [0x591c68], 7
mov eax, dword [0x58c60c]
mov dword [0x591ddc], eax
mov eax, dword [0x591b38]
mov dword [0x591de0], eax
mov dword [0x591c68], 0x2be
push ebp
call fcn.004b2e2c
pop ecx
mov eax, 0x591dd4
mov edx, dword [0x591bf8]
call fcn.00404b74
mov dword [0x591c68], 0x2bf
mov eax, dword [0x58c608]
mov dword [0x591dd8], eax
mov dword [0x591c68], 0x2c0
mov dword [0x591bf4], 0x591dc8
call fcn.004a3124
mov dword [0x591c68], 0x2c1
call fcn.0049fe0c
mov dword [0x591c68], 0x2c2
call fcn.004a0f2c
test al, al
je 0x4b51a7
lea eax, [ebp - 0x17c]
call fcn.004a3574
mov eax, dword [ebp - 0x17c]
lea edx, [ebp - 0x178]
call fcn.004a3884
mov edx, dword [ebp - 0x178]
mov eax, 0x591b9c
call fcn.00404b74
mov eax, 0x592078
mov edx, dword [0x591b9c]
call fcn.00404b74
mov eax, 0x4a3b20
call fcn.004a4950
call fcn.004aca30
mov dword [0x591c68], 8
cmp byte [0x591daa], 0
je 0x4b55eb
mov eax, dword [0x591b38]
test byte [eax + 0x205], 1
je 0x4b5236
call fcn.0040c2cc
add esp, 0xfffffff8
fstp qword [esp]
wait
lea eax, [ebp - 0x180]
call fcn.0040cee0
mov edx, dword [ebp - 0x180]
mov eax, dword [0x591c5c]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [0x591c5c]
mov edx, dword [eax]
call dword [edx + 0x14]
mov edx, dword [0x591b38]
cmp eax, dword [edx + 0x1fc]
jle 0x4b5236
xor edx, edx
mov eax, dword [0x591c5c]
mov ecx, dword [eax]
call dword [ecx + 0x48]
mov eax, 0x591df4
call fcn.00404b20
mov eax, 0x4a3f80
call fcn.004a4950
cmp dword [0x591df4], 0
je 0x4b527b
lea ecx, [ebp - 0x184]
mov dl, 0xd
mov eax, dword [0x591b38]
call fcn.0048a250
mov edx, dword [ebp - 0x184]
mov ecx, dword [0x591df4]
mov eax, 6
call fcn.004a69a8
mov dword [0x591c68], 9
inc dword [0x591b44]
mov dword [0x591c68], 0xa
push ebp
lea eax, [ebp - 0x18c]
call fcn.004b0b80
pop ecx
mov eax, dword [ebp - 0x18c]
lea edx, [ebp - 0x188]
call fcn.004b0248
mov edx, dword [ebp - 0x188]
mov eax, 0x591bec
call fcn.00404b74
mov dword [0x591c68], 0xb
mov eax, dword [0x591b38]
test byte [eax + 0x1e8], 1
je 0x4b544f
mov dword [0x591c68], 0xc
mov byte [0x591da9], 1
call fcn.0049fe0c
mov eax, 0x4b1e84
call fcn.004a4950
mov eax, dword [0x591b38]
cmp byte [eax + 0x1e0], 0
jne 0x4b531f
mov eax, dword [0x591b38]
cmp byte [eax + 0x1e1], 0
jne 0x4b531f
xor eax, eax
jmp 0x4b5321
mov al, 1
mov byte [0x591c04], al
mov eax, dword [0x591b38]
test byte [eax + 0x1c2], 0x10
setne al
mov byte [0x591c05], al
push ebp
call fcn.004b47dc
pop ecx
test al, al
je 0x4b534a
call fcn.004a60b0
cmp byte [0x591da9], 0
je 0x4b54ab
mov dword [0x591c68], 0xd
mov al, byte [ebp + 0x10]
call fcn.004b4890
sub al, 1
jb 0x4b53f8
je 0x4b538c
dec al
jne 0x4b5439
push ebp
mov eax, dword [0x591bf8]
call fcn.004b45f8
pop ecx
jmp 0x4b5439
xor eax, eax
push ebp
push 0x4b53d9
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x190]
mov ecx, dword [0x591bf8]
mov edx, dword [ebp - 0x2c]
call fcn.00404e40
mov edx, dword [ebp - 0x190]
mov eax, dword [0x58ec80]
call fcn.00405208
call fcn.00403704
call fcn.004028d8
mov byte [0x591da9], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4b5439
xor eax, eax
push ebp
push 0x4b541c
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.004abcb4
mov byte [0x591da9], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4b5439
mov dword [0x591c68], 0xe
mov eax, 0x4b1ea8
call fcn.004a4950
jmp 0x4b54ab
mov eax, dword [0x591b38]
cmp byte [eax + 0x1e0], 0
jne 0x4b546f
mov eax, dword [0x591b38]
cmp byte [eax + 0x1e1], 0
jne 0x4b546f
xor eax, eax
jmp 0x4b5471
mov al, 1
mov byte [0x591c04], al
mov eax, dword [0x591b38]
test byte [eax + 0x1c2], 0x10
setne al
mov byte [0x591c05], al
call fcn.004a1174
test al, al
je 0x4b54ab
push ebp
lea eax, [ebp - 0x194]
call fcn.004a613c
mov eax, dword [ebp - 0x194]
call fcn.004b45f8
pop ecx
call fcn.004a703c
call fcn.004b4798
test al, al
je 0x4b54cf
lea eax, [ebp - 0x198]
call fcn.004a33f4
mov eax, dword [ebp - 0x198]
call fcn.004ad108
call fcn.004ad198
mov dword [0x591c68], 0xf
mov eax, dword [0x591b38]
test byte [eax + 0x1c1], 4
je 0x4b5584
call fcn.004a3054
xor eax, eax
push ebp
push 0x4b5539
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x98]
push eax
mov eax, dword [0x591e10]
call fcn.00498ec8
mov ecx, eax
dec ecx
mov edx, 0x4b57f0
mov eax, dword [0x591e10]
call fcn.00498c5c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b5540
call fcn.004a3108
ret
call fcn.004b4798
mov byte [ebp - 0x8e], al
mov eax, dword [0x591b38]
cmp byte [eax + 0x1c0], 0
je 0x4b55a2
call fcn.004b1c94
cmp byte [0x591c06], 0
je 0x4b55b5
mov eax, dword [0x591bf8]
call fcn.004a006c
mov dword [0x591c68], 0x10
cmp byte [ebp - 0x8e], 0
je 0x4b55cd
call fcn.004b0080
cmp byte [ebp - 0x8e], 0
je 0x4b55e4
mov eax, dword [0x591b38]
test byte [eax + 0x1c2], 0x80
jne 0x4b55f2
call fcn.004b00cc
jmp 0x4b55f2
mov byte [ebp - 0x8d], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b5690
mov eax, dword [ebp - 0x60]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x4b5685
inc eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x94], 0
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov ebx, dword [eax]
call sub.kernel32.dll_GetCurrentThreadId_1
cmp ebx, eax
je 0x4b5677
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax]
cmp eax, dword [ebp - 0xc]
je 0x4b5677
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
call fcn.004b498c
test al, al
je 0x4b5677
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x60]
call fcn.004b77e0
mov eax, dword [eax + 4]
push eax
call sub.kernel32.dll_ResumeThread
inc dword [ebp - 0x94]
dec dword [ebp - 0x9c]
jne 0x4b561b
ret
mov dword [0x591c68], 0x12
cmp byte [ebp + 8], 2
je 0x4b56e2
cmp byte [ebp - 0x8e], 0
je 0x4b56dd
mov eax, dword [0x591b38]
test byte [eax + 0x1c2], 0x80
jne 0x4b56e2
call fcn.004b01d0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b570b
mov eax, dword [ebp - 0x60]
call fcn.00403c4c
call fcn.004071b0
mov byte [eax + 0xe9], 0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b57b5
lea eax, [ebp - 0x1a4]
mov edx, 0xf
call fcn.00404b44
lea eax, [ebp - 0x98]
call fcn.00404b20
lea eax, [ebp - 0x8c]
call fcn.00404b20
lea eax, [ebp - 0x6c]
call fcn.00404b20
lea eax, [ebp - 0x5c]
call fcn.00404b20
lea eax, [ebp - 0x54]
mov edx, 3
call fcn.00404b44
lea eax, [ebp - 0x30]
mov edx, 2
call fcn.00404b44
lea eax, [ebp - 0x24]
call fcn.00404b20
lea eax, [ebp - 0x18]
mov edx, dword [0x49cfdc]
call fcn.0040573c
ret