Function at 0x4a61d0
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 0x4a6af2
mov edi, dword [eax + 4]
movzx ecx, byte [edi]
mov eax, edi
mov esi, edx
cmp cl, 0x3a
jne 0x4a6217
mov eax, 0xffffff97
cmp edx, 1
je 0x4a6af8
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 + 0x987e50], 0
je 0x4a628b
inc ebx
cmp esi, ebx
jne 0x4a6220
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 8]
cmp edx, 9
mov dword [esp + 0xc], edx
ja case.default.0x4a6246
jmp dword [edx*4 + 0x9876c0]
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a6736
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 + 0x987b48], 0
je 0x4a6736
inc esi
cmp eax, esi
jne 0x4a6270
jmp 0x4a63bc
mov eax, 0xffffff97
cmp cl, 0x3a
je 0x4a6af8
test edx, edx
je 0x4a62c5
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 0x4a6af8
inc ecx
cmp edx, ecx
jne 0x4a62b0
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jmp 0x4a6af2
cmp edx, 0x3e8
jne case.0x4a6246.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 0x4a642d
test esi, esi
je 0x4a63c6
xor edx, edx
nop dword [eax + eax]
movzx edi, byte [eax + edx]
cmp byte [edi + 0x987c48], 0
je 0x4a6736
inc edx
cmp esi, edx
jne 0x4a6300
jmp 0x4a63bc
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a63bc
mov esi, dword [edx + 4]
cmp eax, 1
jne 0x4a65ed
movzx eax, byte [esi]
cmp eax, 0x20
je 0x4a6736
cmp eax, 9
je 0x4a6736
jmp 0x4a63bc
mov edx, dword [eax + 4]
mov eax, dword [edx + 8]
test eax, eax
mov dword [esp + 4], edx
je 0x4a63bc
mov edx, dword [edx + 4]
xor esi, esi
nop word cs:[eax + eax]
movzx edi, byte [edx + esi]
cmp byte [edi + 0x987d48], 0
je 0x4a6736
inc esi
cmp eax, esi
jne 0x4a6370
jmp 0x4a63bc
mov eax, dword [eax + 4]
mov dword [esp + 4], eax
mov eax, dword [eax + 8]
test eax, eax
je 0x4a6736
mov edx, dword [esp + 4]
mov esi, dword [edx + 4]
movzx edx, byte [esi]
and dl, 0xdf
add dl, 0xbf
cmp dl, 0x19
ja 0x4a6736
cmp eax, 1
jne 0x4a66fe
cmp dword [ebp + 0x10], 0
je 0x4a644f
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0xc]
jne 0x4a63eb
mov esi, 0xffffff97
cmp dword [ebp + 0x14], 0
jne case.0x4a6402.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a6402.1001
mov esi, 0xffffff97
lea eax, [edx - 0x3e8]
cmp eax, 8
ja case.default.0x4a6402
mov ebx, dword [ebp + 0xc]
jmp dword [eax*4 + 0x987710]
mov eax, dword [edi + 0x1c]
test al, 0x10
jne case.0x4a6402.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a6402.1001
or eax, 0x10
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
test esi, esi
je 0x4a644f
cmp esi, 1
jne 0x4a6637
movzx eax, byte [eax]
cmp eax, 9
je 0x4a6736
cmp eax, 0x20
je 0x4a6736
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0xc]
jne 0x4a6475
mov esi, 0xffffff97
test eax, eax
jne case.0x4a6402.1001
test byte [edi + 0x1c], 0x40
jne case.0x4a6402.1001
mov esi, 0xffffff97
cmp edx, 0x3e8
jle 0x4a6681
lea eax, [edx - 0x3e9]
cmp eax, 5
jb case.0x4a6402.1001
cmp edx, 0x3ee
jne 0x4a68d2
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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 0x4a6adc
jmp case.0x4a6402.1001
cmp edx, 9
ja case.default.0x4a65c2
mov ebx, dword [ebp + 0xc]
jmp dword [edx*4 + 0x9876e8]
mov eax, dword [edi + 0x1c]
test al, 1
jne case.0x4a6402.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a6402.1001
or eax, 1
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
movzx edx, byte [esi]
cmp edx, 9
je 0x4a6736
cmp edx, 0x20
je 0x4a6736
movzx edx, byte [esi + eax - 1]
cmp edx, 9
je 0x4a6736
cmp edx, 0x20
je 0x4a6736
xor edx, edx
movzx edi, byte [esi + edx]
cmp dword [edi*4 + 0x987748], 0
je 0x4a6736
inc edx
cmp eax, edx
jne 0x4a661b
jmp 0x4a63bc
movzx edx, byte [eax]
cmp edx, 9
je 0x4a6736
cmp edx, 0x20
je 0x4a6736
movzx edx, byte [eax + esi - 1]
cmp edx, 9
je 0x4a6736
cmp edx, 0x20
je 0x4a6736
xor edx, edx
movzx edi, byte [eax + edx]
cmp dword [edi*4 + 0x987748], 0
je 0x4a6736
inc edx
cmp esi, edx
jne 0x4a6665
jmp 0x4a63bc
cmp edx, 0xb
je 0x4a68e0
cmp edx, 0x37
jne 0x4a68d2
test eax, eax
jne 0x4a6767
mov eax, dword [edi + 0x18]
cmp eax, 0xcc
jne 0x4a6b27
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a6402.1001
mov eax, dword [esp + 4]
cmp dword [eax + 8], 1
jne case.0x4a6402.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.0x4a6402.1001
mov dword [edi + 4], 0
mov dword [edi], 0
mov esi, 0xffffff96
jmp case.0x4a6402.1001
mov ebx, 1
jmp 0x4a670e
inc ebx
cmp eax, ebx
je 0x4a63bc
movzx edx, byte [esi + ebx]
mov ch, dl
add ch, 0xd0
cmp ch, 0xa
jb 0x4a6705
mov ch, dl
and ch, 0xdf
add ch, 0xbf
cmp ch, 0x1a
jb 0x4a6705
add edx, 0xffffffd5
cmp edx, 3
ja 0x4a6736
cmp edx, 1
jne 0x4a6705
mov eax, 0xffffff97
cmp cl, 0x3a
mov edi, dword [ebp + 8]
mov esi, 0xffffff96
jne 0x4a6af2
jmp 0x4a6af8
cmp edx, 0x37
mov ebx, dword [ebp + 0xc]
jne case.0x4a65c2.2
cmp dword [ebp + 0x14], 0
je 0x4a6b00
mov esi, 0xffffff96
jmp case.0x4a6402.1001
mov ecx, dword [edi + 0x1c]
test cl, 8
jne case.0x4a6402.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a6402.1001
mov edx, ecx
or edx, 8
mov dword [edi + 0x1c], edx
cmp eax, 5
je 0x4a6b96
cmp eax, 4
jne 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
jmp 0x4a6c48
mov eax, dword [edi + 0x1c]
test al, 2
jne case.0x4a6402.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a6402.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 0x4a6b75
or eax, 0x402
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
mov ecx, dword [edi + 0x1c]
test cl, 4
jne case.0x4a6402.1001
mov eax, dword [esp + 4]
mov eax, dword [eax + 8]
test eax, eax
je case.0x4a6402.1001
mov edx, ecx
or edx, 4
mov dword [edi + 0x1c], edx
cmp eax, 7
je 0x4a6c56
cmp eax, 4
jne 0x4a6ad3
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
cmp dword [eax], 0x44414548
jne 0x4a6ad3
or ecx, 0x104
mov dword [edi + 0x1c], ecx
jmp 0x4a6ad3
cmp cl, 0x3a
jne 0x4a6adc
jmp case.0x4a6402.1001
mov eax, dword [edi + 0x1c]
test al, 0x20
jne case.0x4a6402.1001
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 8]
test ecx, ecx
je case.0x4a6402.1001
or eax, 0x20
mov dword [edi + 0x1c], eax
cmp ecx, 3
jne case.0x4a6402.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 0x4a693d
movzx edx, byte [ecx + 1]
mov ebx, edx
add bl, 0xc6
cmp bl, 0xf6
jb 0x4a693d
movzx ecx, byte [ecx + 2]
mov ebx, ecx
add bl, 0xc6
cmp bl, 0xf6
jae 0x4a6cd0
mov dword [edi + 0x18], 0xffffffff
jmp case.0x4a6402.1001
cmp dword [ebp + 0x18], 0
je case.0x4a6402.1001
mov eax, dword [edi + 0x1c]
test eax, 0x4000
jne case.0x4a6402.1001
mov ecx, dword [esp + 4]
cmp dword [ecx + 8], 0
je case.0x4a6402.1001
or eax, 0x4000
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
mov eax, dword [esp + 4]
cmp dword [eax + 8], 8
jne case.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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.0x4a6402.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 0x4a6ad3
jmp case.0x4a6402.1001
cmp dword [ebp + 0x14], 0
jne 0x4a6ad3
test byte [edi + 0x1e], 1
jne 0x4a6ad3
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.004a5fd0
add esp, 0xc
test eax, eax
je 0x4a6c94
mov eax, 0xfffe7fff
and eax, dword [edi + 0x1c]
or eax, 0x10000
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
cmp cl, 0x3a
je case.0x4a6402.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 0x4a6af6
test esi, esi
je 0x4a6af2
mov eax, esi
cmp esi, 0xffffff96
jne 0x4a6af8
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.0x4a6402.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a7030
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a6ad3
jmp case.0x4a6402.1001
lea ecx, [eax - 0x64]
cmp ecx, 0x64
jb 0x4a6767
add eax, 0xffffff38
cmp eax, 0x63
ja 0x4a6b47
test byte [edi + 0x1c], 0x80
jne 0x4a6767
mov eax, dword [edi]
and eax, dword [edi + 4]
cmp eax, 0xffffffff
jne case.0x4a6402.1001
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
call fcn.004a7030
mov dword [edi + 4], edx
mov dword [edi], eax
and eax, edx
cmp eax, 0xffffffff
jne 0x4a6adc
jmp case.0x4a6402.1001
cmp ecx, 1
setne cl
cmp dl, 0x2a
setne dl
or dl, cl
jne 0x4a6ad3
or eax, 0x802
mov dword [edi + 0x1c], eax
jmp 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
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 0x4a6ad3
or ecx, 0x1008
mov dword [edi + 0x1c], ecx
jmp 0x4a6ad3
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
movzx edx, byte [eax + 6]
cmp edx, 0x53
je 0x4a6cab
cmp edx, 0x54
jne 0x4a6ad3
mov edx, 0x4e4e4f43
xor edx, dword [eax]
mov esi, 0x5443454e
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a6ad3
or ecx, 0x84
mov dword [edi + 0x1c], ecx
jmp 0x4a6ad3
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 0x4a6ad3
mov edx, 0x4954504f
xor edx, dword [eax]
mov esi, 0x534e4f49
xor esi, dword [eax + 3]
or esi, edx
jne 0x4a6ad3
or ecx, 0x204
mov dword [edi + 0x1c], ecx
jmp 0x4a6ad3
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 0x4a6adc
jmp case.0x4a6402.1001