Function at 0x4a77e0
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 0x4a8102
mov edi, dword [eax + 4]
movzx ecx, byte [edi]
mov eax, edi
mov esi, edx
cmp cl, 0x3a
jne 0x4a7827
mov eax, 0xffffff97
cmp edx, 1
je 0x4a8108
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 + 0x9b2170], 0
je 0x4a789b
inc ebx
cmp esi, ebx
jne 0x4a7830
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 8]
cmp edx, 9
mov dword [esp + 0xc], edx
ja case.default.0x4a7856
jmp dword [edx*4 + 0x9b19e0]
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a7d46
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 + 0x9b1e68], 0
je 0x4a7d46
inc esi
cmp eax, esi
jne 0x4a7880
jmp 0x4a79cc
mov eax, 0xffffff97
cmp cl, 0x3a
je 0x4a8108
test edx, edx
je 0x4a78d5
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 0x4a8108
inc ecx
cmp edx, ecx
jne 0x4a78c0
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jmp 0x4a8102
cmp edx, 0x3e8
jne case.0x4a7856.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 0x4a7a3d
test esi, esi
je 0x4a79d6
xor edx, edx
nop dword [eax + eax]
movzx edi, byte [eax + edx]
cmp byte [edi + 0x9b1f68], 0
je 0x4a7d46
inc edx
cmp esi, edx
jne 0x4a7910
jmp 0x4a79cc
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a79cc
mov esi, dword [edx + 4]
cmp eax, 1
jne 0x4a7bfd
movzx eax, byte [esi]
cmp eax, 0x20
je 0x4a7d46
cmp eax, 9
je 0x4a7d46
jmp 0x4a79cc
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a79cc
mov edx, dword [edx + 4]
xor esi, esi
nop word cs:[eax + eax]
movzx edi, byte [edx + esi]
cmp byte [edi + 0x9b2068], 0
je 0x4a7d46
inc esi
cmp eax, esi
jne 0x4a7980
jmp 0x4a79cc
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a7d46
mov edx, dword [esp + 4]
mov esi, dword [edx + 4]
movzx edx, byte [esi]
and dl, 0xdf
add dl, 0xbf
cmp dl, 0x19
ja 0x4a7d46
cmp eax, 1
jne 0x4a7d0e
cmp dword [ebp + 0x10], 0
je 0x4a7a5f
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0xc]
jne 0x4a79fb
mov esi, 0xffffff97
cmp dword [ebp + 0x14], 0
jne case.0x4a7a12.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a7a12.1001
mov esi, 0xffffff97
lea eax, [edx - 0x3e8]
cmp eax, 8
ja case.default.0x4a7a12
mov ebx, dword [ebp + 0xc]
jmp dword [eax*4 + 0x9b1a30]
mov eax, dword [edi + 0x1c]
test al, 0x10
jne case.0x4a7a12.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a7a12.1001
or eax, 0x10
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
test esi, esi
je 0x4a7a5f
cmp esi, 1
jne 0x4a7c47
movzx eax, byte [eax]
cmp eax, 9
je 0x4a7d46
cmp eax, 0x20
je 0x4a7d46
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0xc]
jne 0x4a7a85
mov esi, 0xffffff97
test eax, eax
jne case.0x4a7a12.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a7a12.1001
mov esi, 0xffffff97
cmp edx, 0x3e8
jle 0x4a7c91
lea eax, [edx - 0x3e9]
cmp eax, 5
jb case.0x4a7a12.1001
cmp edx, 0x3ee
jne 0x4a7ee2
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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 0x4a80ec
jmp case.0x4a7a12.1001
cmp edx, 9
ja case.default.0x4a7bd2
mov ebx, dword [ebp + 0xc]
jmp dword [edx*4 + 0x9b1a08]
mov eax, dword [edi + 0x1c]
test al, 1
jne case.0x4a7a12.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a7a12.1001
or eax, 1
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
movzx edx, byte [esi]
cmp edx, 9
je 0x4a7d46
cmp edx, 0x20
je 0x4a7d46
movzx edx, byte [esi + eax - 1]
cmp edx, 9
je 0x4a7d46
cmp edx, 0x20
je 0x4a7d46
xor edx, edx
movzx edi, byte [esi + edx]
cmp dword [edi*4 + 0x9b1a68], 0
je 0x4a7d46
inc edx
cmp eax, edx
jne 0x4a7c2b
jmp 0x4a79cc
movzx edx, byte [eax]
cmp edx, 9
je 0x4a7d46
cmp edx, 0x20
je 0x4a7d46
movzx edx, byte [eax + esi - 1]
cmp edx, 9
je 0x4a7d46
cmp edx, 0x20
je 0x4a7d46
xor edx, edx
movzx edi, byte [eax + edx]
cmp dword [edi*4 + 0x9b1a68], 0
je 0x4a7d46
inc edx
cmp esi, edx
jne 0x4a7c75
jmp 0x4a79cc
cmp edx, 0xb
je 0x4a7ef0
cmp edx, 0x37
jne 0x4a7ee2
test eax, eax
jne 0x4a7d77
mov eax, dword [edi + 0x18]
cmp eax, 0xcc
jne 0x4a8137
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a7a12.1001
mov eax, dword [esp + 4]
cmp dword [eax + 8], 1
jne case.0x4a7a12.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.0x4a7a12.1001
mov dword [edi + 4], 0
mov dword [edi], 0
mov esi, 0xffffff96
jmp case.0x4a7a12.1001
mov ebx, 1
jmp 0x4a7d1e
inc ebx
cmp eax, ebx
je 0x4a79cc
movzx edx, byte [esi + ebx]
mov ch, dl
add ch, 0xd0
cmp ch, 0xa
jb 0x4a7d15
mov ch, dl
and ch, 0xdf
add ch, 0xbf
cmp ch, 0x1a
jb 0x4a7d15
add edx, 0xffffffd5
cmp edx, 3
ja 0x4a7d46
cmp edx, 1
jne 0x4a7d15
mov eax, 0xffffff97
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jne 0x4a8102
jmp 0x4a8108
cmp edx, 0x37
mov ebx, dword [ebp + 0xc]
jne case.0x4a7bd2.2
cmp dword [ebp + 0x14], 0
je 0x4a8110
mov esi, 0xffffff96
jmp case.0x4a7a12.1001
mov ecx, dword [edi + 0x1c]
test cl, 8
jne case.0x4a7a12.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a7a12.1001
mov edx, ecx
or edx, 8
mov dword [edi + 0x1c], edx
cmp eax, 5
je 0x4a81a6
cmp eax, 4
jne 0x4a80e3
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 0x4a80e3
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 0x4a80e3
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 0x4a80e3
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 0x4a80e3
jmp 0x4a8258
mov eax, dword [edi + 0x1c]
test al, 2
jne case.0x4a7a12.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a7a12.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 0x4a8185
or eax, 0x402
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
mov ecx, dword [edi + 0x1c]
test cl, 4
jne case.0x4a7a12.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a7a12.1001
mov edx, ecx
or edx, 4
mov dword [edi + 0x1c], edx
cmp eax, 7
je 0x4a8266
cmp eax, 4
jne 0x4a80e3
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
cmp dword [eax], 0x44414548
jne 0x4a80e3
or ecx, 0x104
mov dword [edi + 0x1c], ecx
jmp 0x4a80e3
cmp cl, 0x3a
jne 0x4a80ec
jmp case.0x4a7a12.1001
mov eax, dword [edi + 0x1c]
test al, 0x20
jne case.0x4a7a12.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a7a12.1001
or eax, 0x20
mov dword [edi + 0x1c], eax
cmp ecx, 3
jne case.0x4a7a12.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 0x4a7f4d
movzx edx, byte [ecx + 1]
mov ebx, edx
add bl, 0xc6
cmp bl, 0xf6
jb 0x4a7f4d
movzx ecx, byte [ecx + 2]
mov ebx, ecx
add bl, 0xc6
cmp bl, 0xf6
jae 0x4a82e0
mov dword [edi + 0x18], 0xffffffff
jmp case.0x4a7a12.1001
cmp dword [ebp + 0x18], 0
je case.0x4a7a12.1001
mov eax, dword [edi + 0x1c]
test eax, 0x4000
jne case.0x4a7a12.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a7a12.1001
or eax, 0x4000
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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.0x4a7a12.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 0x4a80e3
jmp case.0x4a7a12.1001
cmp dword [ebp + 0x14], 0
jne 0x4a80e3
test byte [edi + 0x1e], 1
jne 0x4a80e3
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.004a75e0
add esp, 0xc
test eax, eax
je 0x4a82a4
mov eax, 0xfffe7fff
and eax, dword [edi + 0x1c]
or eax, 0x10000
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
cmp cl, 0x3a
je case.0x4a7a12.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 0x4a8106
test esi, esi
je 0x4a8102
mov eax, esi
cmp esi, 0xffffff96
jne 0x4a8108
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.0x4a7a12.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a8640
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a80e3
jmp case.0x4a7a12.1001
lea ecx, [eax - 0x64]
cmp ecx, 0x64
jb 0x4a7d77
add eax, 0xffffff38
cmp eax, 0x63
ja 0x4a8157
test byte [edi + 0x1c], 0x80
jne 0x4a7d77
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a7a12.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a8640
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a80ec
jmp case.0x4a7a12.1001
cmp ecx, 1
setne cl
cmp dl, 0x2a
setne dl
or dl, cl
jne 0x4a80e3
or eax, 0x802
mov dword [edi + 0x1c], eax
jmp 0x4a80e3
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 0x4a80e3
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 0x4a80e3
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 0x4a80e3
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 0x4a80e3
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 0x4a80e3
or ecx, 0x1008
mov dword [edi + 0x1c], ecx
jmp 0x4a80e3
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
movzx edx, byte [eax + 6]
cmp edx, 0x53
je 0x4a82bb
cmp edx, 0x54
jne 0x4a80e3
mov edx, 0x4e4e4f43
xor edx, dword [eax]
mov esi, 0x5443454e
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a80e3
or ecx, 0x84
mov dword [edi + 0x1c], ecx
jmp 0x4a80e3
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 0x4a80e3
mov edx, 0x4954504f
xor edx, dword [eax]
mov esi, 0x534e4f49
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a80e3
or ecx, 0x204
mov dword [edi + 0x1c], ecx
jmp 0x4a80e3
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 0x4a80ec
jmp case.0x4a7a12.1001