Function at 0x4a5c20
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x20
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, dword [eax]
mov edx, dword [eax + 8]
mov esi, 0xffffff96
test edx, edx
je 0x4a6542
mov edi, dword [eax + 4]
movzx ecx, byte [edi]
mov eax, edi
mov esi, edx
cmp cl, 0x3a
jne 0x4a5c67
mov eax, 0xffffff97
cmp edx, 1
je 0x4a6548
lea eax, [edi + 1]
lea esi, [edx - 1]
mov dword [esp + 8], edi
xor ebx, ebx
nop dword [eax]
movzx edi, byte [eax + ebx]
cmp dword [edi*4 + 0xa38510], 0
je 0x4a5cdb
inc ebx
cmp esi, ebx
jne 0x4a5c70
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 8]
cmp edx, 9
mov dword [esp + 0xc], edx
ja case.default.0x4a5c96
jmp dword [edx*4 + 0xa37d80]
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a6186
mov edx, dword [esp + 4]
mov edx, dword [edx + 4]
xor esi, esi
nop dword [eax + eax]
movzx edi, byte [edx + esi]
cmp byte [edi + 0xa38208], 0
je 0x4a6186
inc esi
cmp eax, esi
jne 0x4a5cc0
jmp 0x4a5e0c
mov eax, 0xffffff97
cmp cl, 0x3a
je 0x4a6548
test edx, edx
je 0x4a5d15
xor ecx, ecx
mov esi, dword [esp + 8]
nop word cs:[eax + eax]
movzx ebx, byte [esi + ecx]
add bl, 0xbf
cmp bl, 0x1a
jb 0x4a6548
inc ecx
cmp edx, ecx
jne 0x4a5d00
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jmp 0x4a6542
cmp edx, 0x3e8
jne case.0x4a5c96.2
mov edx, dword [eax + 4]
mov eax, dword [edx + 4]
mov esi, dword [edx + 8]
cmp dword [ebp + 0x10], 0
mov dword [esp + 4], edx
je 0x4a5e7d
test esi, esi
je 0x4a5e16
xor edx, edx
nop dword [eax + eax]
movzx edi, byte [eax + edx]
cmp byte [edi + 0xa38308], 0
je 0x4a6186
inc edx
cmp esi, edx
jne 0x4a5d50
jmp 0x4a5e0c
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a5e0c
mov esi, dword [edx + 4]
cmp eax, 1
jne 0x4a603d
movzx eax, byte [esi]
cmp eax, 0x20
je 0x4a6186
cmp eax, 9
je 0x4a6186
jmp 0x4a5e0c
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a5e0c
mov edx, dword [edx + 4]
xor esi, esi
nop word cs:[eax + eax]
movzx edi, byte [edx + esi]
cmp byte [edi + 0xa38408], 0
je 0x4a6186
inc esi
cmp eax, esi
jne 0x4a5dc0
jmp 0x4a5e0c
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a6186
mov edx, dword [esp + 4]
mov esi, dword [edx + 4]
movzx edx, byte [esi]
and dl, 0xdf
add dl, 0xbf
cmp dl, 0x19
ja 0x4a6186
cmp eax, 1
jne 0x4a614e
cmp dword [ebp + 0x10], 0
je 0x4a5e9f
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0xc]
jne 0x4a5e3b
mov esi, 0xffffff97
cmp dword [ebp + 0x14], 0
jne case.0x4a5e52.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a5e52.1001
mov esi, 0xffffff97
lea eax, [edx - 0x3e8]
cmp eax, 8
ja case.default.0x4a5e52
mov ebx, dword [ebp + 0xc]
jmp dword [eax*4 + 0xa37dd0]
mov eax, dword [edi + 0x1c]
test al, 0x10
jne case.0x4a5e52.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a5e52.1001
or eax, 0x10
mov dword [edi + 0x1c], eax
jmp 0x4a6523
test esi, esi
je 0x4a5e9f
cmp esi, 1
jne 0x4a6087
movzx eax, byte [eax]
cmp eax, 9
je 0x4a6186
cmp eax, 0x20
je 0x4a6186
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0xc]
jne 0x4a5ec5
mov esi, 0xffffff97
test eax, eax
jne case.0x4a5e52.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a5e52.1001
mov esi, 0xffffff97
cmp edx, 0x3e8
jle 0x4a60d1
lea eax, [edx - 0x3e9]
cmp eax, 5
jb case.0x4a5e52.1001
cmp edx, 0x3ee
jne 0x4a6322
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a5e52.1001
mov eax, dword [eax + 4]
movzx ecx, byte [eax]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x74
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 1]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x72
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 2]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x61
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 3]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x69
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 4]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x6c
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 5]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x65
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 6]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x72
jne case.0x4a5e52.1001
movzx eax, byte [eax + 7]
mov ecx, eax
add cl, 0xbf
mov edx, eax
or dl, 0x20
cmp cl, 0x1a
movzx ecx, dl
cmovae ecx, eax
cmp cl, 0x73
je 0x4a652c
jmp case.0x4a5e52.1001
cmp edx, 9
ja case.default.0x4a6012
mov ebx, dword [ebp + 0xc]
jmp dword [edx*4 + 0xa37da8]
mov eax, dword [edi + 0x1c]
test al, 1
jne case.0x4a5e52.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a5e52.1001
or eax, 1
mov dword [edi + 0x1c], eax
jmp 0x4a6523
movzx edx, byte [esi]
cmp edx, 9
je 0x4a6186
cmp edx, 0x20
je 0x4a6186
movzx edx, byte [esi + eax - 1]
cmp edx, 9
je 0x4a6186
cmp edx, 0x20
je 0x4a6186
xor edx, edx
movzx edi, byte [esi + edx]
cmp dword [edi*4 + 0xa37e08], 0
je 0x4a6186
inc edx
cmp eax, edx
jne 0x4a606b
jmp 0x4a5e0c
movzx edx, byte [eax]
cmp edx, 9
je 0x4a6186
cmp edx, 0x20
je 0x4a6186
movzx edx, byte [eax + esi - 1]
cmp edx, 9
je 0x4a6186
cmp edx, 0x20
je 0x4a6186
xor edx, edx
movzx edi, byte [eax + edx]
cmp dword [edi*4 + 0xa37e08], 0
je 0x4a6186
inc edx
cmp esi, edx
jne 0x4a60b5
jmp 0x4a5e0c
cmp edx, 0xb
je 0x4a6330
cmp edx, 0x37
jne 0x4a6322
test eax, eax
jne 0x4a61b7
mov eax, dword [edi + 0x18]
cmp eax, 0xcc
jne 0x4a6577
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
cmp dword [eax + 8], 1
jne case.0x4a5e52.1001
mov eax, dword [eax + 4]
movzx eax, byte [eax]
mov ecx, eax
add cl, 0xbf
mov edx, eax
or dl, 0x20
cmp cl, 0x1a
movzx ecx, dl
cmovae ecx, eax
cmp cl, 0x30
jne case.0x4a5e52.1001
mov dword [edi + 4], 0
mov dword [edi], 0
mov esi, 0xffffff96
jmp case.0x4a5e52.1001
mov ebx, 1
jmp 0x4a615e
inc ebx
cmp eax, ebx
je 0x4a5e0c
movzx edx, byte [esi + ebx]
mov ch, dl
add ch, 0xd0
cmp ch, 0xa
jb 0x4a6155
mov ch, dl
and ch, 0xdf
add ch, 0xbf
cmp ch, 0x1a
jb 0x4a6155
add edx, 0xffffffd5
cmp edx, 3
ja 0x4a6186
cmp edx, 1
jne 0x4a6155
mov eax, 0xffffff97
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jne 0x4a6542
jmp 0x4a6548
cmp edx, 0x37
mov ebx, dword [ebp + 0xc]
jne case.0x4a6012.2
cmp dword [ebp + 0x14], 0
je 0x4a6550
mov esi, 0xffffff96
jmp case.0x4a5e52.1001
mov ecx, dword [edi + 0x1c]
test cl, 8
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a5e52.1001
mov edx, ecx
or edx, 8
mov dword [edi + 0x1c], edx
cmp eax, 5
je 0x4a65e6
cmp eax, 4
jne 0x4a6523
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
movzx edx, byte [eax]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x68
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx edx, byte [eax + 1]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x74
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx edx, byte [eax + 2]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x74
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx eax, byte [eax + 3]
mov edx, eax
add dl, 0xbf
mov dh, al
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, eax
cmp dl, 0x70
jne 0x4a6523
jmp 0x4a6698
mov eax, dword [edi + 0x1c]
test al, 2
jne case.0x4a5e52.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a5e52.1001
mov edx, eax
or edx, 2
mov dword [edi + 0x1c], edx
mov edx, dword [esp + 4]
mov edx, dword [edx + 4]
movzx edx, byte [edx]
cmp dl, 0x2f
jne 0x4a65c5
or eax, 0x402
mov dword [edi + 0x1c], eax
jmp 0x4a6523
mov ecx, dword [edi + 0x1c]
test cl, 4
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a5e52.1001
mov edx, ecx
or edx, 4
mov dword [edi + 0x1c], edx
cmp eax, 7
je 0x4a66a6
cmp eax, 4
jne 0x4a6523
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
cmp dword [eax], 0x44414548
jne 0x4a6523
or ecx, 0x104
mov dword [edi + 0x1c], ecx
jmp 0x4a6523
cmp cl, 0x3a
jne 0x4a652c
jmp case.0x4a5e52.1001
mov eax, dword [edi + 0x1c]
test al, 0x20
jne case.0x4a5e52.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a5e52.1001
or eax, 0x20
mov dword [edi + 0x1c], eax
cmp ecx, 3
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
movzx eax, byte [ecx]
mov edx, eax
add dl, 0xc6
cmp dl, 0xf6
jb 0x4a638d
movzx edx, byte [ecx + 1]
mov ebx, edx
add bl, 0xc6
cmp bl, 0xf6
jb 0x4a638d
movzx ecx, byte [ecx + 2]
mov ebx, ecx
add bl, 0xc6
cmp bl, 0xf6
jae 0x4a6720
mov dword [edi + 0x18], 0xffffffff
jmp case.0x4a5e52.1001
cmp dword [ebp + 0x18], 0
je case.0x4a5e52.1001
mov eax, dword [edi + 0x1c]
test eax, 0x4000
jne case.0x4a5e52.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a5e52.1001
or eax, 0x4000
mov dword [edi + 0x1c], eax
jmp 0x4a6523
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a5e52.1001
mov eax, dword [eax + 4]
movzx ecx, byte [eax]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x74
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 1]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x72
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 2]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x61
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 3]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x69
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 4]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x6c
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 5]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x65
jne case.0x4a5e52.1001
movzx ecx, byte [eax + 6]
mov edx, ecx
add dl, 0xbf
mov dh, cl
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, ecx
cmp dl, 0x72
jne case.0x4a5e52.1001
movzx eax, byte [eax + 7]
mov ecx, eax
add cl, 0xbf
mov edx, eax
or dl, 0x20
cmp cl, 0x1a
movzx ecx, dl
cmovae ecx, eax
cmp cl, 0x73
je 0x4a6523
jmp case.0x4a5e52.1001
cmp dword [ebp + 0x14], 0
jne 0x4a6523
test byte [edi + 0x1e], 1
jne 0x4a6523
movsd xmm0, qword [edi + 0x10]
movsd qword [esp + 0x10], xmm0
lea eax, [esp + 0x10]
mov ecx, dword [esp + 4]
push dword [ecx + 8]
push dword [ecx + 4]
push eax
call fcn.004a5a20
add esp, 0xc
test eax, eax
je 0x4a66e4
mov eax, 0xfffe7fff
and eax, dword [edi + 0x1c]
or eax, 0x10000
mov dword [edi + 0x1c], eax
jmp 0x4a6523
cmp cl, 0x3a
je case.0x4a5e52.1001
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
xor esi, esi
mov eax, dword [esp + 8]
cmp byte [eax], 0x3a
je 0x4a6546
test esi, esi
je 0x4a6542
mov eax, esi
cmp esi, 0xffffff96
jne 0x4a6548
or byte [edi + 0x1c], 0x40
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a6a80
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a6523
jmp case.0x4a5e52.1001
lea ecx, [eax - 0x64]
cmp ecx, 0x64
jb 0x4a61b7
add eax, 0xffffff38
cmp eax, 0x63
ja 0x4a6597
test byte [edi + 0x1c], 0x80
jne 0x4a61b7
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a5e52.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a6a80
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a652c
jmp case.0x4a5e52.1001
cmp ecx, 1
setne cl
cmp dl, 0x2a
setne dl
or dl, cl
jne 0x4a6523
or eax, 0x802
mov dword [edi + 0x1c], eax
jmp 0x4a6523
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
movzx edx, byte [eax]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x68
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx edx, byte [eax + 1]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x74
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx edx, byte [eax + 2]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x74
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx edx, byte [eax + 3]
mov ebx, edx
add bl, 0xbf
mov bh, dl
or bh, 0x20
cmp bl, 0x1a
movzx ebx, bh
cmovae ebx, edx
cmp bl, 0x70
mov ebx, dword [ebp + 0xc]
jne 0x4a6523
movzx eax, byte [eax + 4]
mov edx, eax
add dl, 0xbf
mov dh, al
or dh, 0x20
cmp dl, 0x1a
movzx edx, dh
cmovae edx, eax
cmp dl, 0x73
jne 0x4a6523
or ecx, 0x1008
mov dword [edi + 0x1c], ecx
jmp 0x4a6523
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
movzx edx, byte [eax + 6]
cmp edx, 0x53
je 0x4a66fb
cmp edx, 0x54
jne 0x4a6523
mov edx, 0x4e4e4f43
xor edx, dword [eax]
mov esi, 0x5443454e
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a6523
or ecx, 0x84
mov dword [edi + 0x1c], ecx
jmp 0x4a6523
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], ecx
or byte [edi + 0x1d], 0x80
jmp 0x4a6523
mov edx, 0x4954504f
xor edx, dword [eax]
mov esi, 0x534e4f49
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a6523
or ecx, 0x204
mov dword [edi + 0x1c], ecx
jmp 0x4a6523
lea eax, [eax + eax*4]
lea eax, [edx + eax*2]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
shl eax, 0x10
add eax, 0xeb300000
mov ecx, eax
shr ecx, 0x10
mov dword [edi + 0x18], ecx
cmp eax, 0x640000
setb cl
cmp eax, 0x650000
sete al
or al, cl
je 0x4a652c
jmp case.0x4a5e52.1001