Function at 0x4c0170
Capabilities:
Check for software breakpoints
Resolve function by parsing pe exports

Disassembly:
mov dword fs:[0], ecx
jmp 0x4c0bc0
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x83b66a
push eax
mov dword fs:[0], esp
sub esp, 0x4c
push edi
mov edi, ecx
mov ecx, dword [edi]
call fcn.005e0170
test al, al
je 0x4c0bb4
push ebx
push ebp
push esi
mov esi, dword [esp + 0x6c]
mov al, byte [esi + 0xc]
test al, al
mov ebx, dword [esi + 0x14]
mov ebp, dword [esi + 0x1c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x6c], ebp
jne 0x4c025b
mov eax, dword [edi + 0xc]
test eax, eax
mov byte [esp + 0x74], 0
jne 0x4c01cd
mov eax, dword [edi + 8]
test eax, eax
je 0x4c01fe
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x4c01d7
mov eax, dword [edi + 8]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 4]
cmp eax, 9
jne 0x4c01fe
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x4c01ed
mov eax, dword [edi + 8]
push eax
mov ecx, esi
call fcn.004adbf0
test al, al
je 0x4c01fe
mov byte [esp + 0x74], 1
mov eax, dword [edi]
mov eax, dword [eax + 0x47c]
push 0x3ee
lea ecx, [eax + 4]
call fcn.00681740
test eax, eax
jne 0x4c0bb1
mov ecx, dword [edi]
call fcn.005df8f0
test al, al
jne 0x4c0bb1
mov al, byte [esp + 0x74]
test al, al
jne 0x4c0bb1
test ebx, ebx
je 0x4c0bb1
mov cl, byte [ebx + 0x36]
and cl, 7
cmp cl, 3
jne 0x4c0bb1
push ebx
push esi
mov ecx, edi
call fcn.004bf9b0
jmp 0x4c0bb1
mov edx, dword [edi]
push edx
mov ecx, esi
call fcn.004b3a20
cmp ebp, 0x31
mov byte [esp + 0x1c], 0
mov byte [esp + 0x14], 0
mov dword [esp + 0x18], 0
je 0x4c0281
cmp ebp, 0x32
jne 0x4c0290
mov eax, dword [edi]
push eax
push 0xf
mov ecx, 0xc0b058
call fcn.00602590
mov edx, dword [edi]
mov ecx, dword [edx + 0x46c]
shr ecx, 8
and ecx, 1
je 0x4c02e8
mov eax, dword [edx + 0x58c]
test eax, eax
je 0x4c02e8
cmp dword [eax + 0x590], 9
je 0x4c02bc
cmp dword [eax + 0x594], 2
jne 0x4c02e8
test byte [esi + 0x25], 2
jne 0x4c02d1
mov ecx, esi
call fcn.004abca0
test al, al
je 0x4c0236
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
push edx
push eax
push esi
mov ecx, edi
call fcn.004b9ff0
jmp 0x4c0bb1
mov al, byte [esi + 0x40]
test al, al
je 0x4c02fa
mov al, byte [esi + 0xc]
test al, al
jne 0x4c07d0
fld dword [edx + 0x540]
fcomp dword [0x858624]
fnstsw ax
test ah, 5
jnp 0x4c07d0
test ecx, ecx
je 0x4c031f
test byte [esi + 0x25], 2
jne 0x4c07d0
test ebx, ebx
je 0x4c0bb1
cmp ebp, 0x2f
jge 0x4c06d7
test ecx, ecx
jne 0x4c062d
mov cl, byte [ebx + 0x36]
xor ebp, ebp
and cl, 7
cmp cl, 3
mov dword [esp + 0x74], ebp
jne 0x4c03d6
mov eax, dword [ebx + 0x47c]
mov ebp, ebx
lea ecx, [eax + 4]
mov dword [esp + 0x74], ebp
call fcn.00681720
test eax, eax
je 0x4c03d6
mov eax, dword [ebx + 0x47c]
lea ecx, [eax + 4]
call fcn.00681720
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x10]
cmp eax, 0x403
jne 0x4c03d6
push 0x20
call fcn.0061a5a0
mov esi, eax
add esp, 4
mov dword [esp + 0x74], esi
test esi, esi
mov dword [esp + 0x64], 1
je 0x4c03bb
mov eax, dword [ebx + 0x47c]
lea ecx, [eax + 4]
call fcn.00681720
mov eax, dword [eax + 0x10]
push eax
push ebx
push 0
mov ecx, esi
call fcn.006225f0
jmp 0x4c03bd
xor eax, eax
mov ecx, dword [edi]
push 0x38
mov dword [esp + 0x68], 0xffffffff
mov dword [edi + 0x20], eax
call fcn.005e4500
jmp 0x4c0bb1
mov eax, dword [esi + 0x2c]
cmp eax, 0xbf
jne 0x4c03ec
mov eax, dword [edi]
push 0
push eax
mov ecx, esi
call fcn.004b3fc0
mov eax, dword [esp + 0x6c]
cmp eax, 0x29
mov ebx, 0x11
je 0x4c0403
cmp eax, 0x2a
je 0x4c0403
cmp eax, ebx
jne 0x4c042b
mov ecx, dword [ebp + 0x47c]
call fcn.00600f70
test eax, eax
je 0x4c05b9
mov ecx, dword [ebp + 0x47c]
call fcn.00600f70
cmp byte [eax + 0x10], 5
jne 0x4c05b9
test byte [esi + 0x25], 2
je 0x4c0488
push 0x18
call fcn.0061a5a0
add esp, 4
mov dword [esp + 0x70], eax
test eax, eax
mov dword [esp + 0x64], 3
je 0x4c0620
mov ecx, dword [edi]
movzx edx, byte [ecx + 0x719]
mov dword [esp + 0x74], edx
mov ebx, dword [esi + 0x28]
fild dword [esp + 0x74]
mov ebp, dword [esi + 0x2c]
fmul dword [0x859038]
fdivr dword [0x858c4c]
call fcn.00821b40
mov ecx, dword [esp + 0x70]
push eax
push ebx
push ebp
call fcn.006786c0
jmp 0x4c0622
mov eax, dword [esi + 0x2c]
cmp eax, 0xbf
je 0x4c062d
cmp eax, 0xc0
je 0x4c062d
mov ecx, dword [esi + 0x28]
push eax
push ecx
call fcn.004d3a60
movzx eax, word [eax + 0xa]
shr eax, 0xa
add esp, 8
test al, 1
je 0x4c0559
mov al, byte [esi + 0x25]
mov bl, 4
test bl, al
jne 0x4c062d
mov eax, dword [esi + 0x2c]
cmp eax, 0x1c
jl 0x4c0524
cmp eax, 0x1f
jg 0x4c0524
mov ecx, dword [edi]
mov edx, dword [ecx + 0x18]
push eax
push edx
call fcn.004d68b0
add esp, 8
test eax, eax
jne 0x4c0500
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x28]
push eax
mov eax, dword [edi]
push ecx
mov ecx, dword [eax + 0x18]
push ecx
call fcn.004d3aa0
add esp, 0xc
mov dword [eax + 0x18], 0
fld dword [esi + 0x30]
fstp dword [eax + 0x1c]
fld dword [esi + 0x34]
push 0
fstp dword [eax + 0x24]
mov ecx, eax
call fcn.004cea80
or byte [esi + 0x25], bl
jmp 0x4c062d
mov edx, dword [esi + 0x30]
mov ecx, dword [esi + 0x28]
push edx
push eax
mov eax, dword [edi]
push ecx
mov ecx, dword [eax + 0x18]
push ecx
mov dword [esp + 0x84], edx
call fcn.004d4610
fld dword [esi + 0x34]
add esp, 0x10
fstp dword [eax + 0x24]
push 0
mov ecx, eax
call fcn.004cea80
or byte [esi + 0x25], bl
jmp 0x4c062d
push 0x28
call fcn.0061a5a0
add esp, 4
mov dword [esp + 0x70], eax
test eax, eax
mov dword [esp + 0x64], 4
je 0x4c059a
fld dword [esi + 0x3c]
mov bl, byte [esi + 0x24]
fadd dword [esi + 0x38]
mov ebp, dword [esi + 0x20]
call fcn.00821b40
mov ecx, dword [esp + 0x70]
push eax
mov eax, dword [esp + 0x78]
movzx edx, bl
push edx
push ebp
push eax
call fcn.00620780
jmp 0x4c059c
xor eax, eax
mov dword [edi + 0x20], eax
mov cl, byte [esi + 0x25]
mov edx, dword [esi + 0x28]
mov ebx, dword [esi + 0x2c]
shr cl, 2
and cl, 1
mov dword [eax + 0x10], ebx
mov dword [eax + 0x14], edx
mov byte [eax + 0xd], cl
jmp 0x4c0625
mov ecx, dword [edi]
mov eax, dword [ecx + 0x47c]
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x4c05f4
mov eax, ecx
mov edx, dword [eax]
call dword [edx + 0x10]
cmp eax, 0x107
jne 0x4c05f4
mov ecx, dword [esp + 0x6c]
mov eax, dword [edi]
mov edx, dword [eax + 0x47c]
cmp ecx, ebx
sete cl
push ecx
mov ecx, dword [edx + 4]
push ebp
push eax
call fcn.00620660
jmp 0x4c062d
push 0x1c
call fcn.0061a5a0
add esp, 4
mov dword [esp + 0x74], eax
test eax, eax
mov dword [esp + 0x64], 2
je 0x4c0620
cmp dword [esp + 0x6c], ebx
sete cl
push ecx
push ebp
mov ecx, eax
call fcn.006202c0
jmp 0x4c0622
xor eax, eax
mov dword [edi + 0x20], eax
mov dword [esp + 0x64], 0xffffffff
mov eax, dword [edi + 0xc]
xor bl, bl
test eax, eax
jne 0x4c063d
mov eax, dword [edi + 8]
test eax, eax
je 0x4c0669
mov ecx, dword [edi + 0xc]
test ecx, ecx
jne 0x4c0647
mov ecx, dword [edi + 8]
mov edx, dword [ecx]
call dword [edx + 4]
cmp eax, 9
jne 0x4c0669
mov eax, dword [edi + 0xc]
test eax, eax
jne 0x4c065b
mov eax, dword [edi + 8]
push eax
mov ecx, esi
call fcn.004adbf0
test al, al
je 0x4c0669
mov bl, 1
mov eax, dword [edi]
mov eax, dword [eax + 0x47c]
push 0x3ee
lea ecx, [eax + 4]
call fcn.00681740
test eax, eax
jne 0x4c0bb1
mov ecx, dword [edi]
call fcn.005df8f0
test al, al
jne 0x4c0bb1
test bl, bl
jne 0x4c0bb1
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x28]
test eax, eax
je 0x4c0bb1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x28]
mov cl, byte [eax + 0x36]
and cl, 7
cmp cl, 3
jne 0x4c0bb1
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x28]
push eax
push esi
mov ecx, edi
call fcn.004bf9b0
jmp 0x4c0bb1
test ecx, ecx
jne 0x4c0bb1
mov eax, dword [esi + 0x2c]
cmp eax, 0xbf
je 0x4c0bb1
cmp eax, 0xc0
je 0x4c0bb1
cmp ebp, 0x31
je 0x4c070b
cmp ebp, 0x32
je 0x4c070b
cmp ebp, 0x36
jne 0x4c0bb1
push 0x18
call fcn.0061a5a0
add esp, 4
mov dword [esp + 0x74], eax
test eax, eax
mov dword [esp + 0x64], 5
je 0x4c074f
mov ecx, dword [edi]
mov edx, dword [ecx + 0x480]
mov ebp, dword [esi + 0x28]
mov esi, dword [esi + 0x2c]
neg edx
sbb edx, edx
and edx, 0xfffffe0c
add edx, 0x3e8
push edx
push ebp
push esi
mov ecx, eax
call fcn.006786c0
jmp 0x4c0751
xor eax, eax
mov dword [edi + 0x20], eax
mov al, byte [ebx + 0x36]
or esi, 0xffffffff
and al, 7
cmp al, 2
mov dword [esp + 0x64], esi
jne 0x4c0768
mov eax, ebx
jmp 0x4c078d
cmp al, 3
jne 0x4c0bb1
mov eax, dword [ebx + 0x46c]
test ah, 1
je 0x4c0bb1
mov eax, dword [ebx + 0x58c]
test eax, eax
je 0x4c0bb1
test eax, eax
je 0x4c0bb1
push eax
lea ecx, [esp + 0x48]
call fcn.004b1b60
mov edx, dword [edi]
mov eax, dword [edx + 0x47c]
push 0
lea ecx, [esp + 0x48]
push ecx
lea ecx, [eax + 0x68]
mov dword [esp + 0x6c], 6
call fcn.004ab420
lea ecx, [esp + 0x44]
mov dword [esp + 0x64], esi
call fcn.004b1c10
jmp 0x4c0bb1
mov eax, dword [edx + 0x46c]
test ah, 1
je 0x4c07ff
mov edx, dword [edx + 0x58c]
test edx, edx
je 0x4c07ff
cmp dword [edx + 0x590], 9
je 0x4c02d1
cmp dword [edx + 0x594], 2
je 0x4c02d1
mov eax, dword [esi + 0x2c]
cmp eax, 0xbf
je 0x4c0814
cmp eax, 0xc0
jne 0x4c0aa2
mov ebx, dword [esp + 0x74]
xor ebp, ebp
cmp ebx, ebp
je 0x4c0a1c
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x10]
cmp eax, 0xcf
jne 0x4c0987
cmp dword [esi + 0x1c], 0x36
jne 0x4c08e8
fld dword [esi + 0x3c]
fadd dword [esi + 0x38]
fcomp dword [0x858ba4]
fnstsw ax
test ah, 0x41
jne 0x4c08e8
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], 0x40000000
mov ebp, 0xa
lea ebx, [ebx]
mov eax, dword [edi]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x4c087e
lea eax, [ecx + 0x30]
jmp 0x4c0881
add eax, 4
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x30], edx
mov eax, dword [eax + 8]
push 0x3f000000
push 0xbf000000
mov dword [esp + 0x3c], eax
call fcn.0041bd90
fadd dword [esp + 0x34]
push 0x3f000000
push 0xbf000000
fstp dword [esp + 0x3c]
call fcn.0041bd90
fadd dword [esp + 0x40]
mov ecx, dword [edi]
add esp, 0x10
lea eax, [esp + 0x38]
fstp dword [esp + 0x30]
mov edx, dword [ecx + 0x12c]
push edx
push 0xa
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, 0xa9ae00
call fcn.0049eb00
dec ebp
jne 0x4c0870
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x4c0938
fld dword [ecx + 0x18]
fcomp dword [0x858b8c]
fnstsw ax
test ah, 0x41
jne 0x4c0938
fld dword [ecx + 0x1c]
fcomp dword [0x858b50]
fnstsw ax
test ah, 1
jne 0x4c0938
mov edx, dword [ecx + 0x14]
fld dword [ecx + 0x20]
fld dword [edx + 0x10]
fxch st(1)
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 5
jp 0x4c0938
movsx eax, word [ecx + 0x2c]
movsx ecx, word [ecx + 0xe]
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], eax
jmp 0x4c0a0e
mov al, byte [ebx + 8]
test al, al
je 0x4c0a1c
mov eax, dword [edi]
mov ecx, dword [eax + 0x18]
push 0x800
push ecx
call fcn.004d6a70
add esp, 8
test eax, eax
mov dword [esi + 0x34], 0x3f800000
mov dword [esi + 0x30], 0x40800000
mov dword [esi + 0x28], 0
je 0x4c097b
mov dword [esi + 0x2c], 0x27
jmp 0x4c0a1c
mov dword [esi + 0x2c], 0x24
jmp 0x4c0a1c
mov edx, dword [ebx]
mov ecx, ebx
call dword [edx + 0x10]
cmp eax, 0xcd
jne 0x4c0a1c
mov ecx, dword [ebx + 0xc]
cmp ecx, ebp
je 0x4c09dd
mov eax, dword [ecx + 0x14]
fld dword [ecx + 0x20]
fld dword [eax + 0x10]
fxch st(1)
fdiv st(1)
fcomp dword [0x858b8c]
fnstsw ax
fstp st(0)
test ah, 5
jp 0x4c09dd
cmp word [ecx + 0x2c], 0x73
mov dword [esi + 0x34], 0x3f800000
mov dword [esi + 0x30], 0x40800000
mov dword [esi + 0x28], ebp
jne 0x4c097b
mov dword [esi + 0x2c], 0x27
jmp 0x4c0a1c
mov al, byte [ebx + 8]
test al, al
jne 0x4c0a1c
mov ecx, dword [edi]
mov edx, dword [ecx + 0x18]
push 0x800
push edx
call fcn.004d6a70
add esp, 8
test eax, eax
mov dword [esi + 0x28], ebp
je 0x4c0a07
mov dword [esi + 0x2c], 0x27
jmp 0x4c0a0e
mov dword [esi + 0x2c], 0x24
mov dword [esi + 0x30], 0x40800000
mov dword [esi + 0x34], 0x3f800000
mov eax, dword [esi + 0x2c]
cmp eax, 0xbf
je 0x4c0a2d
cmp eax, 0xc0
jne 0x4c0a39
mov eax, dword [edi]
push 0
push eax
mov ecx, esi
call fcn.004b3a60
mov eax, dword [esi + 0x1c]
cmp eax, 0x16
jl 0x4c0a46
cmp eax, 0x21
jle 0x4c0a4f
cmp eax, 0x26
je 0x4c0a4f
xor bl, bl
jmp 0x4c0a51
mov bl, 1
mov ecx, dword [edi]
call fcn.005df8f0
test al, al
jne 0x4c0aa2
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4c0aa2
test bl, bl
je 0x4c0aa2
mov ecx, eax
mov dl, byte [ecx + 0x36]
and dl, 7
cmp dl, 3
jne 0x4c0aa2
mov ebx, eax
call fcn.005df8f0
test al, al
jne 0x4c0a89
cmp byte [ebx + 0x484], 2
jne 0x4c0aa2
mov edx, dword [edi]
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x1c]
push ecx
push edx
call fcn.006796c0
add esp, 0xc
mov byte [esp + 0x1c], al
mov ebp, dword [esp + 0x70]
test ebp, ebp
mov byte [esp + 0x74], 0
je 0x4c0aca
mov eax, dword [ebp]
mov ecx, ebp
call dword [eax + 0x10]
cmp eax, 0x403
jne 0x4c0aca
mov al, byte [ebp + 8]
test al, al
sete cl
mov byte [esp + 0x74], cl
push 0x28
call fcn.0061a5a0
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x64], 0
je 0x4c0b2f
mov ecx, dword [esi + 0x30]
mov edx, dword [esi + 0x34]
mov ebp, dword [esi + 0x28]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x80]
push ecx
mov dword [esp + 0x80], edx
mov ecx, dword [esp + 0x80]
mov edx, dword [esi + 0x2c]
push ecx
mov ecx, dword [esp + 0x38]
push ecx
push edx
push ebp
push ebx
mov ecx, eax
call fcn.00630040
jmp 0x4c0b31
xor eax, eax
mov edx, dword [edi]
push edx
push 0x1c
mov ecx, 0xc0b058
mov dword [esp + 0x6c], 0xffffffff
mov dword [edi + 0x24], eax
call fcn.00602590
mov eax, dword [edi]
mov ecx, dword [eax + 0x47c]
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x4c0b86
mov edx, dword [ecx]
call dword [edx + 0x10]
cmp eax, 0x107
jne 0x4c0b75
cmp ebx, 0x29
je 0x4c0b86
cmp ebx, 0x2a
je 0x4c0b86
cmp ebx, 0x11
je 0x4c0b86
mov eax, dword [edi]
mov ecx, dword [eax + 0x47c]
push 0
push 0
call fcn.00600dc0
lea ecx, [esp + 0x20]
push ecx
mov ecx, esi
mov byte [esp + 0x24], 0
call fcn.004add60
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4c0bb1
mov edx, dword [esp + 0x20]
push edx
push ebx
push eax
mov eax, dword [edi]
push eax
call fcn.004b9340
add esp, 0x10
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x50]
pop edi
nop
nop
jmp 0x402307
add esp, 0x58
ret 0x10