Function at 0x4c8690
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push esi
mov esi, ecx
test byte [esi + 0x298], 0x10
je 0x4c86b4
cmp dword [esi + 0x8c4], 2
jne 0x4c8869
jmp 0x4c87b2
call fcn.004cb4f0
mov dword [esi + 0x874], eax
mov dword [esi + 0x878], edx
mov dword [esi + 0x88c], 0
mov dword [esi + 0x890], 0
cmp dword [0x64f3e4], 0
je 0x4c870b
mov eax, dword [esi + 0x298]
test al, 6
je 0x4c870b
test eax, 0x10000
jne 0x4c870b
push dword [esi + 0x170]
mov ecx, esi
call fcn.004cbeb0
mov dword [0x650cd8], eax
mov dword [0x650cdc], edx
mov eax, dword [esi + 0x298]
mov ecx, dword [esi + 0x170]
and eax, 0x38600
cmp eax, 0x8000
jne 0x4c8757
push dword [esi + 0x878]
push dword [esi + 0x874]
push ecx
mov ecx, dword [esi + 0x7dc]
call fcn.004d3370
test eax, eax
jne 0x4c90f1
mov ecx, dword [esi + 0x170]
mov eax, dword [ecx + 0xd4]
mov edx, dword [ecx + 0xd8]
jmp 0x4c8763
mov eax, dword [ecx + 0xdc]
mov edx, dword [ecx + 0xe0]
cmp dword [0x651718], 0
je 0x4c8781
test byte [esi + 0x298], 6
je 0x4c8781
mov eax, dword [ecx + 0xb0]
mov edx, dword [ecx + 0xb4]
cmp dword [0x64f3e4], 0
je 0x4c879d
mov ecx, dword [esi + 0x298]
test cl, 6
je 0x4c879d
test ecx, 0x10000
je 0x4c87a8
mov dword [0x650cd8], eax
mov dword [0x650cdc], edx
and dword [0x64f474], 0xffff0fff
mov edx, dword [esi + 0x170]
mov dword [esi + 0x87c], 0
mov dword [esi + 0x880], 0
mov ecx, dword [edx + 0xe4]
mov eax, dword [edx + 0xe8]
add ecx, 0xfff
adc eax, 0
and ecx, 0xfffff000
push eax
push ecx
push dword [edx + 0xf0]
lea ecx, [esi + 8]
push dword [edx + 0xec]
call fcn.00493950
test eax, eax
jne 0x4c90f1
push eax
push esi
call fcn.004b5930
mov ecx, dword [esi + 0x170]
add esp, 8
test dword [esi + 0x298], 0x40000
mov eax, dword [ecx + 0xec]
mov dword [esi + 0x8dc], eax
mov eax, dword [ecx + 0xf0]
mov dword [esi + 0x8e0], eax
je 0x4c8869
mov ecx, dword [esi + 0x7e4]
call fcn.004955b0
test eax, eax
jne 0x4c90f1
mov ecx, dword [esi + 0x7e4]
call fcn.00497940
mov ecx, dword [esi + 0x170]
mov dword [ecx + 0x148], eax
mov dword [ecx + 0x14c], edx
push ebx
push edi
push 0
mov byte [ebp - 1], 0
call fcn.005cc714
add esp, 4
mov dword [ebp - 0x24], eax
call fcn.004e1a40
test eax, eax
jne 0x4c8ff8
nop dword [eax]
mov ecx, esi
call fcn.004cfdd0
mov edi, eax
test edi, edi
jne 0x4c89b4
mov ecx, dword [esi + 0x7d8]
mov edx, dword [esi + 0x2a4]
add edx, ecx
mov dword [ebp - 0xc], edx
movzx eax, word [ecx + 2]
mov ebx, eax
test ax, ax
jne 0x4c88c2
mov ebx, 0x10000
movzx eax, word [ecx]
test ax, ax
jne 0x4c88cf
mov eax, 0x10000
mov edi, dword [0x650bb4]
mov dword [ebp - 8], eax
and eax, 0xfffffffe
mov dword [ebp - 0x18], eax
mov eax, dword [ecx + 4]
mov dword [ebp - 0x14], eax
test edi, edi
jne 0x4c8aca
mov edi, dword [ebp - 0x18]
cmp ebx, edi
jne 0x4c8c6b
test ebx, ebx
je 0x4c90f6
test edi, edi
je 0x4c90f6
cmp dword [esi + 0x2a4], 4
je 0x4c891b
mov eax, dword [ecx]
cmp eax, dword [ecx + 4]
jne 0x4c8c6b
mov ecx, dword [edx + 4]
lea eax, [ebx - 0xc]
cmp ecx, eax
jne 0x4c8c6b
cmp dword [edx], 3
ja 0x4c8c6b
lea eax, [edx + 0xc]
push ecx
push eax
mov dword [ebp - 0x18], eax
call fcn.0052b640
mov edx, dword [ebp - 0xc]
add esp, 8
mov ecx, dword [edx]
add ecx, dword [edx + 4]
xor ecx, eax
cmp dword [edx + 8], ecx
jne 0x4c8c6b
mov eax, dword [esi + 0x2a4]
add eax, ebx
add dword [esi + 0x8dc], eax
adc dword [esi + 0x8e0], 0
mov eax, dword [edx]
cmp eax, 3
jne 0x4c8c5a
mov eax, dword [ebp - 0x18]
mov ecx, esi
mov ebx, dword [esi + 0x298]
push 0
mov eax, dword [eax]
mov dword [ebp - 8], eax
call fcn.004cdec0
mov edi, eax
test bl, 0x10
je 0x4c8aa5
mov eax, dword [ebp - 8]
add dword [esi + 0x874], eax
adc dword [esi + 0x878], 0
test edi, edi
je 0x4c8feb
cmp edi, 0x4a
je 0x4c89b8
mov byte [ebp - 1], 1
test edi, edi
jne 0x4c8aca
mov ebx, 0x12344321
cmp dword [0x64f3e4], 0
je 0x4c8a57
mov edx, dword [esi + 0x298]
test dl, 6
je 0x4c8a57
mov eax, edx
and eax, 0x5000
cmp eax, 0x5000
setne cl
bt edx, 0x10
setae al
test al, cl
je 0x4c8a57
push 0
mov ecx, esi
call fcn.004cdec0
mov edi, eax
test edi, edi
jne 0x4c8aca
mov eax, dword [esi + 0x170]
mov edx, dword [esi + 0x874]
sub edx, dword [esi + 0x88c]
mov edi, dword [esi + 0x878]
sbb edi, dword [esi + 0x890]
mov ecx, dword [eax + 0x1c4]
mov eax, dword [eax + 0x1c8]
cmp eax, edi
jb 0x4c8a57
ja 0x4c8a3e
cmp ecx, edx
jb 0x4c8a57
sub ecx, edx
sbb eax, edi
add ecx, 1
adc eax, 0
push eax
push ecx
mov ecx, esi
call fcn.004d8480
mov edi, eax
test edi, edi
jne 0x4c8aca
mov eax, dword [esi + 0x298]
mov ecx, esi
shr eax, 4
not al
and al, 1
movzx eax, al
push eax
call fcn.004cdec0
mov edi, eax
test edi, edi
je 0x4c8a7e
cmp edi, 0x4a
jne 0x4c9026
cmp ebx, dword [esi + 0x89c]
je 0x4c9116
cmp dword [esi + 0x8a0], 0
jne 0x4c9116
mov edi, 0xcd
mov byte [ebp - 1], 1
jmp 0x4c9026
test edi, edi
jne 0x4c8aca
test dword [esi + 0x298], 0x30600
jne 0x4c8ad8
mov eax, dword [ebp - 8]
mov ecx, esi
push eax
call fcn.004cf3a0
mov edi, eax
test edi, edi
je 0x4c8feb
cmp edi, 0x4a
je 0x4c9026
jmp 0x4c8ffd
cmp dword [esi + 0x9d0], 0
je 0x4c8bb4
mov ecx, esi
call fcn.004d7990
mov ebx, dword [ebp - 8]
cmp dword [esi + 0x9b4], ebx
mov eax, dword [esi + 0x9b4]
jae 0x4c8b8f
mov edx, ebx
mov dword [esi + 0x9b4], 0
sub edx, eax
cmp dword [esi + 0x9b8], edx
mov eax, dword [esi + 0x9b8]
jae 0x4c8b6a
sub edx, eax
mov dword [esi + 0x9b8], 0
cmp dword [esi + 0x9a0], edx
jae 0x4c8b5a
mov dword [esi + 0x9a0], 0
mov eax, dword [esi + 0x998]
mov ecx, dword [esi + 0x99c]
add eax, edx
mov dword [esi + 0x998], eax
adc ecx, 0
mov dword [esi + 0x99c], ecx
jmp 0x4c8bb7
mov eax, dword [esi + 0x9a0]
sub eax, edx
mov dword [esi + 0x9a0], eax
jmp 0x4c8b3b
sub eax, edx
mov dword [esi + 0x9b8], eax
mov eax, dword [esi + 0x994]
movzx ecx, word [eax + 6]
mov eax, dword [esi + 0x990]
imul ecx, edx
add eax, ecx
mov dword [esi + 0x990], eax
jmp 0x4c8bb7
sub eax, ebx
mov dword [esi + 0x9b4], eax
mov eax, dword [esi + 0x994]
movzx ecx, word [eax + 6]
mov eax, dword [esi + 0x98c]
imul ecx, ebx
add eax, ecx
mov dword [esi + 0x98c], eax
jmp 0x4c8bb7
mov ebx, dword [ebp - 8]
add dword [esi + 0x874], ebx
adc dword [esi + 0x878], 0
cmp dword [esi + 0x9d0], 0
je 0x4c8bf9
sub dword [esi + 0x8a4], ebx
cmp dword [esi + 0x9b4], 0
jne 0x4c8bed
cmp dword [esi + 0x8a4], 0
je 0x4c8bf9
push dword [esi + 0x980]
jmp 0x4c8bf3
push dword [esi + 0x984]
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esi + 0x298]
test eax, 0x10000
jne 0x4c8feb
cmp dword [0x64f3e4], 0
je 0x4c8feb
test al, 6
je 0x4c8feb
mov eax, dword [0x650ce0]
mov ecx, dword [0x650ce4]
add eax, ebx
mov dword [0x650ce0], eax
adc ecx, 0
mov dword [0x650ce4], ecx
mov eax, dword [0x650cf0]
mov ecx, dword [0x650cf4]
add eax, ebx
mov dword [0x650cf0], eax
adc ecx, 0
mov dword [0x650cf4], ecx
jmp 0x4c8feb
cmp eax, 2
jne 0x4c8feb
mov ebx, dword [edx + 0xc]
jmp 0x4c89c5
mov ecx, dword [0x651718]
test ecx, ecx
je 0x4c8ef5
mov eax, dword [esi + 0x894]
or eax, dword [esi + 0x898]
mov eax, dword [ebp - 8]
je 0x4c8d4d
test eax, 0x1ff
jne 0x4c8d4d
mov ecx, dword [esi + 0x170]
xor edx, edx
mov eax, edi
div dword [ecx + 4]
mov ecx, dword [esi + 0x874]
mov edx, eax
mov eax, dword [esi + 0x878]
add ecx, edx
adc eax, 0
cmp eax, dword [esi + 0x898]
ja 0x4c8d30
jb 0x4c8ccb
cmp ecx, dword [esi + 0x894]
ja 0x4c8d30
test byte [esi + 0x298], 6
mov dword [esi + 0x874], ecx
mov dword [esi + 0x878], eax
je 0x4c8d16
mov eax, dword [0x650ce0]
mov ecx, dword [0x650ce4]
add eax, edx
mov dword [0x650ce0], eax
adc ecx, 0
mov dword [0x650ce4], ecx
mov eax, dword [0x650cf0]
mov ecx, dword [0x650cf4]
add eax, edx
mov dword [0x650cf0], eax
adc ecx, 0
mov dword [0x650cf4], ecx
mov eax, dword [esi + 0x2a4]
add eax, ebx
add dword [esi + 0x8dc], eax
adc dword [esi + 0x8e0], 0
jmp 0x4c8feb
mov eax, dword [ebp - 8]
mov dword [esi + 0x894], 0
mov dword [esi + 0x898], 0
mov ecx, dword [0x651718]
test ecx, ecx
je 0x4c8ef5
test byte [esi + 0x298], 6
je 0x4c8ef5
test eax, 0x1ff
jne 0x4c8ef5
mov ecx, dword [esi + 0x170]
xor edx, edx
mov eax, edi
mov ecx, dword [ecx + 4]
div ecx
xor edx, edx
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x8d0]
div ecx
mov edx, dword [0x64f32c]
mov edi, eax
xor eax, eax
add edi, dword [esi + 0x874]
adc eax, dword [esi + 0x878]
mov dword [ebp - 0x18], eax
cmp eax, edx
jb 0x4c8dd1
ja 0x4c8db0
cmp edi, dword [0x64f328]
jbe 0x4c8dd1
mov ecx, 0x64f318
call fcn.004c41d0
mov edx, dword [0x64f32c]
mov eax, dword [ebp - 0x18]
cmp eax, edx
ja 0x4c8db0
jb 0x4c8dd1
cmp edi, dword [0x64f328]
ja 0x4c8db0
cmp eax, dword [0x64f324]
jb 0x4c8ef5
ja 0x4c8deb
cmp edi, dword [0x64f320]
jb 0x4c8ef5
mov ecx, dword [ebp - 0x10]
xor eax, eax
add ecx, edi
mov dword [ebp - 0x20], eax
mov edi, ecx
mov dword [ebp - 0x1c], ecx
adc eax, dword [ebp - 0x18]
add edi, 0xffffffff
mov ecx, dword [0x64f328]
adc eax, 0xffffffff
cmp eax, edx
ja 0x4c8ef5
jb 0x4c8e1b
cmp edi, ecx
ja 0x4c8ef5
push 0
mov ecx, esi
call fcn.004cdec0
mov edi, eax
test edi, edi
jne 0x4c8aca
mov eax, dword [esi + 0x2a4]
add eax, ebx
mov ebx, dword [ebp - 0x20]
add dword [esi + 0x8dc], eax
mov eax, dword [ebp - 0x10]
adc dword [esi + 0x8e0], edi
add dword [esi + 0x874], eax
mov ecx, dword [esi + 0x874]
adc dword [esi + 0x878], ebx
mov eax, dword [esi + 0x878]
mov dword [esi + 0x8b4], ecx
add ecx, 0xffffffff
mov dword [esi + 0x8b8], eax
adc eax, 0xffffffff
mov dword [esi + 0x8bc], ecx
mov dword [esi + 0x8c0], eax
mov ecx, dword [0x64f328]
mov eax, dword [0x64f32c]
add ecx, 1
adc eax, edi
push eax
push ecx
mov ecx, esi
call fcn.004cd100
mov edi, eax
test edi, edi
jne 0x4c8aca
mov edx, dword [ebp - 0x10]
sub edx, dword [esi + 0x8b4]
mov eax, dword [0x650ce0]
sbb ebx, dword [esi + 0x8b8]
add edx, dword [esi + 0x874]
mov ecx, dword [0x650ce4]
adc ebx, dword [esi + 0x878]
add eax, edx
mov dword [0x650ce0], eax
adc ecx, ebx
mov dword [0x650ce4], ecx
mov eax, dword [0x650cf0]
mov ecx, dword [0x650cf4]
add eax, edx
mov dword [0x650cf0], eax
adc ecx, ebx
mov dword [0x650cf4], ecx
jmp 0x4c8feb
cmp dword [esi + 0x290], 3
jb 0x4c8f13
push dword [esi + 0x8dc]
lea ecx, [esi + 0x178]
push ebx
push dword [ebp - 0xc]
call fcn.004901f0
mov eax, dword [esi + 0x2a4]
mov edi, dword [esi + 0x914]
add eax, ebx
add dword [esi + 0x8dc], eax
adc dword [esi + 0x8e0], 0
test edi, edi
je 0x4c8fa2
mov eax, dword [esi + 0x34]
mov ecx, dword [edi + 0x30]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x3c]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x1c], eax
lea eax, [ecx + 0xbc]
mov dword [edi + 0x34], ecx
mov dword [edi + 0x30], eax
cmp eax, dword [edi + 0x24]
jne 0x4c8f5e
mov eax, dword [edi + 0x20]
mov dword [edi + 0x30], eax
push 0xffffffffffffffff
add ecx, 0x1c
call fcn.0047edf0
mov eax, dword [ebp - 0x1c]
push dword [ebp - 0x20]
movzx ecx, ax
mov eax, dword [ebp - 0x18]
shl ecx, 0x10
movzx eax, ax
or ecx, eax
push ecx
push dword [ebp - 0x14]
mov ecx, dword [edi + 0x34]
push dword [ebp - 8]
push ebx
push dword [ebp - 0xc]
call fcn.0048daa0
mov eax, dword [esi + 0x914]
mov edi, dword [eax + 0x38]
test edi, edi
jne 0x4c8aca
jmp 0x4c8feb
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 8]
lea ecx, [esi + 0x718]
push ebx
push dword [ebp - 0xc]
push dword [esi + 0x8d8]
call fcn.0047b380
mov edi, eax
test edi, edi
jne 0x4c89b4
push dword [esi + 0x8d8]
mov eax, dword [ebp - 0x14]
mov ecx, esi
push dword [ebp - 8]
add dword [esi + 0x89c], eax
call fcn.004d1d30
mov edi, eax
test edi, edi
jne 0x4c9104
call fcn.004e1a40
test eax, eax
je 0x4c8890
mov edi, 1
mov eax, dword [esi + 0x900]
mov ecx, esi
push 1
mov dword [esi + 0x8d8], eax
mov dword [esi + 0x8d0], 0
mov dword [esi + 0x8d4], 0
call fcn.004cdec0
test byte [esi + 0x298], 0x10
jne 0x4c903c
push dword [ebp - 0x24]
push 5
call fcn.004d9420
add esp, 8
test edi, edi
jne 0x4c907e
mov ebx, dword [esi + 0x298]
test bl, 6
je 0x4c908f
test bl, 0x10
jne 0x4c908f
test byte [0x64f68c], 2
je 0x4c908f
mov eax, ebx
mov ecx, esi
and eax, 0xfff3e800
or eax, 0x800
mov dword [esi + 0x298], eax
call fcn.004d61c0
mov edi, eax
mov dword [esi + 0x298], ebx
test edi, edi
je 0x4c908f
cmp edi, 0xcd
jne 0x4c90c2
cmp dword [0x64f428], 0
je 0x4c90dc
mov edx, dword [esi + 0x298]
test dl, 6
je 0x4c90c2
mov eax, edx
and eax, 0x5000
cmp eax, 0x5000
setne cl
bt edx, 0x10
setae al
test al, cl
je 0x4c90c2
push 0xfa
mov ecx, esi
call fcn.004c9490
mov edi, eax
test edi, edi
jne 0x4c90dc
test dword [esi + 0x298], 0x10010
jne 0x4c90dc
push 0x64
call fcn.004c12d0
add esp, 4
cmp byte [ebp - 1], 0
je 0x4c90ed
push dword [esi + 0x34]
mov ecx, esi
push edi
call fcn.004cda40
mov eax, edi
pop edi
pop ebx
pop esi
mov esp, ebp
pop ebp
ret
mov edi, 0x5e
mov byte [ebp - 1], 1
jmp 0x4c8ffd
cmp edi, 0x5e
jne 0x4c89b8
mov byte [ebp - 1], 1
jmp 0x4c8ffd
test byte [esi + 0x298], 0x10
je 0x4c902f
mov dword [esi + 0x8c4], 3
jmp 0x4c9026