Function at 0x4a95a0
Capabilities:
Reference http user-agent string

Disassembly:
mov ecx, dword [0x99504c]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4a9b39
sub esp, 0x5c
mov edx, dword [esp + 0x70]
cmp edx, 0x12
jg 0x4a9b20
mov ebx, dword [esp + 0x68]
test ebx, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov edi, dword [esp + 0x64]
test edi, edi
sete al
and eax, ebp
test al, al
je 0x4a95f6
mov eax, dword [esp + 0x60]
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
add esp, 0x5c
ret
cmp ebx, 1
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta al
and ebp, 1
or eax, ebp
test al, al
je 0x4a9617
mov eax, ebx
xor ecx, ecx
mov ebp, 0x20
jmp 0x4a961f
mov eax, ebx
mov ecx, eax
mov ebx, edi
xor ebp, ebp
test ecx, ecx
xchg esi, ebx
sete bl
xchg esi, ebx
seta dl
cmp ebx, 0x10000
xchg edi, ebx
setae bl
xchg edi, ebx
and edi, esi
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x4a9652
shr ebx, 0x10
mov edx, ecx
shl edx, 0x10
or ebx, edx
shr ecx, 0x10
add ebp, 0x10
test ecx, ecx
sete dl
xchg edi, ebx
seta bl
xchg edi, ebx
cmp ebx, 0x100
xchg esi, ebx
setae bl
xchg esi, ebx
and esi, edx
or esi, edi
xchg esi, eax
test al, al
xchg esi, eax
je 0x4a9685
shr ebx, 8
mov edx, ecx
shl edx, 0x18
or ebx, edx
shr ecx, 8
add ebp, 8
test ecx, ecx
jne 0x4a9b12
cmp ebx, 0x100
jae 0x4a9b06
lea edx, [0x753253]
movzx edx, byte [edx + ebx]
lea ebx, [edx + ebp]
cmp ebx, 0x37
jge 0x4a9701
lea ecx, [edx + ebp - 0x37]
neg ecx
shl eax, cl
mov dword [esp + 0x58], eax
mov edx, dword [esp + 0x64]
mov ebp, edx
shl edx, cl
mov dword [esp + 0x54], edx
lea esi, [ecx - 0x20]
mov edi, ecx
mov ecx, esi
shl ebp, cl
neg ecx
mov edx, dword [esp + 0x64]
shr edx, cl
mov eax, dword [esp + 0x6c]
lea eax, [ebx + eax - 0x37]
cmp ecx, 0x20
sbb ebx, ebx
and edx, ebx
cmp esi, 0x20
sbb ebx, ebx
and ebx, ebp
cmp edi, 0x20
sbb ebp, ebp
mov esi, dword [esp + 0x58]
and esi, ebp
or esi, edx
mov edx, dword [esp + 0x54]
and edx, ebp
or esi, ebx
jmp 0x4a970d
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
imul ecx, eax, 0x13441
add ecx, 0x4105b6
sar ecx, 0x12
mov ebx, dword [esp + 0x70]
sub ebx, ecx
mov dword [esp + 0x50], ebx
lea ecx, [ebx - 1]
cmp ecx, 0x37
jg 0x4a9739
test ecx, ecx
xchg edi, ebx
setge bl
xchg edi, ebx
jmp 0x4a973b
xor edi, edi
mov dword [esp + 0x24], ecx
xchg edi, eax
mov byte [esp + 0x22], al
xchg edi, eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
mov dword [esp + 4], esi
mov dword [esp], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call fcn.004ab350
mov ecx, dword [esp + 0x18]
test ecx, ecx
jge 0x4a9aee
mov dword [esp + 0x40], ecx
mov edx, dword [esp + 0x50]
lea ebx, [edx + 0x15]
movzx ebp, byte [esp + 0x1c]
cmp ebx, 0x16
jae 0x4a97bf
mov ebx, dword [esp + 0x28]
test ebx, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
mov edi, dword [esp + 0x2c]
test edi, edi
sete al
and eax, esi
test al, al
jne 0x4a9a19
xchg ebp, eax
mov byte [esp + 0x23], al
xchg ebp, eax
mov eax, ebp
mov ebp, dword [esp + 0x24]
xchg ebp, ebx
neg ebx
xchg ebp, ebx
mov dword [esp + 0x30], ebp
xor esi, esi
jmp 0x4a9a40
movzx eax, byte [esp + 0x22]
mov byte [esp + 0x22], al
xchg ebp, eax
mov byte [esp + 0x23], al
xchg ebp, eax
mov ebx, ecx
neg ebx
mov esi, ecx
mov ecx, ebx
mov edi, 1
shl edi, cl
mov dword [esp + 0x58], edi
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], edx
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x34], ebp
shr ebp, cl
mov dword [esp + 0x54], ebp
lea eax, [ecx - 0x20]
neg eax
mov ecx, eax
mov ebp, 1
shr ebp, cl
shl edx, cl
add esi, 0x20
xchg esi, ebx
neg ebx
xchg esi, ebx
mov ecx, esi
mov edi, 1
shl edi, cl
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x38]
shr edi, cl
mov dword [esp + 0x48], edi
mov ecx, ebx
mov edi, dword [esp + 0x38]
shr edi, cl
cmp eax, 0x20
sbb eax, eax
and ebp, eax
and edx, eax
cmp ecx, 0x20
sbb eax, eax
mov ebx, dword [esp + 0x58]
and ebx, eax
mov ecx, ebp
mov ebp, dword [esp + 0x54]
and ebp, eax
or edx, ebp
and edi, eax
mov dword [esp + 0x58], edi
mov eax, ebx
add ebx, 0xffffffff
mov ebp, dword [esp + 0x34]
and ebx, ebp
cmp esi, 0x20
sbb ebp, ebp
mov esi, dword [esp + 0x4c]
and esi, ebp
or esi, ecx
add eax, 0xffffffff
adc esi, 0xffffffff
mov eax, dword [esp + 0x48]
and eax, ebp
or eax, edx
mov dword [esp + 0x34], eax
mov edx, dword [esp + 0x38]
and esi, edx
movzx edx, byte [esp + 0x22]
test dl, dl
je 0x4a9942
mov edx, dword [esp + 0x40]
lea ecx, [edx + 1]
neg ecx
mov dword [esp + 0x44], ecx
mov edx, 1
shl edx, cl
lea ebp, [ecx - 0x20]
mov ecx, ebp
mov edi, 1
shl edi, cl
neg ecx
mov eax, 1
shr eax, cl
cmp ecx, 0x20
sbb ecx, ecx
and eax, ecx
cmp ebp, 0x20
sbb ebp, ebp
and edi, ebp
or edi, eax
cmp edi, esi
sete al
xchg ebp, ebx
setb bl
xchg ebp, ebx
mov edi, dword [esp + 0x44]
cmp edi, 0x20
sbb edi, edi
and edx, edi
cmp edx, ebx
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, eax
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x4a98fa
movzx ecx, byte [esp + 0x23]
jmp 0x4a9927
cmp edx, ebx
sete cl
and eax, ecx
test al, al
je 0x4a9935
movzx ecx, byte [esp + 0x23]
test cl, cl
je 0x4a9927
test al, al
je 0x4a993a
test cl, cl
je 0x4a993a
mov eax, dword [esp + 0x34]
test eax, 1
setne dl
jmp 0x4a99c1
mov eax, dword [esp + 0x34]
mov edx, 1
jmp 0x4a99c1
movzx ecx, byte [esp + 0x23]
mov eax, dword [esp + 0x34]
xor edx, edx
jmp 0x4a99c1
mov dword [esp + 0x3c], esi
mov ebp, dword [esp + 0x40]
lea ecx, [ebp + 1]
neg ecx
mov dword [esp + 0x44], ecx
mov ebp, esi
shr esi, cl
mov dword [esp + 0x54], esi
mov edx, ebx
shr ebx, cl
lea eax, [ecx - 0x20]
mov dword [esp + 0x4c], eax
mov ecx, eax
shr ebp, cl
neg eax
mov ecx, eax
mov edi, dword [esp + 0x3c]
shl edi, cl
mov esi, dword [esp + 0x44]
cmp esi, 0x20
sbb esi, esi
mov dword [esp + 0x48], esi
and ebx, esi
mov esi, dword [esp + 0x4c]
cmp esi, 0x20
sbb esi, esi
and ebp, esi
cmp eax, 0x20
sbb eax, eax
and edi, eax
or edi, ebx
or ebp, edi
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x48]
test ebx, eax
sete al
cmp ebp, 1
sete bl
and ebx, eax
mov eax, dword [esp + 0x34]
movzx ecx, byte [esp + 0x23]
mov esi, dword [esp + 0x3c]
mov ebp, ebx
mov ebx, edx
mov edx, ebp
test esi, esi
xchg ebp, ebx
setne bl
xchg ebp, ebx
test ebx, ebx
setne bl
or ebp, ebx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x4a99d9
xor ecx, ecx
mov ebx, dword [esp + 0x60]
mov dword [esp], ebx
mov ebp, dword [esp + 0x58]
mov dword [esp + 8], ebp
mov dword [esp + 4], eax
xor ecx, 1
mov byte [esp + 0xc], cl
mov byte [esp + 0xd], dl
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], eax
call fcn.004a9b50
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x50]
sub ecx, edx
inc ecx
mov dword [eax + 0x10], ecx
add esp, 0x5c
ret
mov eax, 1
mov ebp, 1
jmp 0x4a97c4
lea eax, [ecx + 1]
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x50]
mov edi, esi
mov esi, eax
movzx eax, byte [esp + 0x23]
cmp esi, ebp
jge 0x4a9a19
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], ebx
mov eax, 0xcccccccd
mul edi
mov dword [esp + 0x58], edx
mov eax, ebx
mov ebp, 0xcccccccd
mul ebp
shr edx, 2
mov dword [esp + 0x54], edx
lea eax, [edx + edx*4]
sub ebx, eax
mov eax, esi
mov esi, dword [esp + 0x58]
shr esi, 2
lea ecx, [esi + esi*4]
sub edi, ecx
mov ecx, eax
mov eax, 0x33333333
mul edi
mov dword [esp + 0x58], edx
add ebx, edi
mov edi, eax
mov eax, ebp
mul ebx
shr edx, 2
mov eax, dword [esp + 0x54]
add eax, 0
adc esi, 0
add eax, edi
mov ebx, dword [esp + 0x58]
adc esi, ebx
add eax, edx
adc esi, 0
mov edx, 5
mov ebx, eax
mul edx
lea edi, [esi + esi*4]
add edx, edi
mov edi, dword [esp + 0x28]
cmp eax, edi
xchg edi, ebx
setne bl
xchg edi, ebx
mov ebp, dword [esp + 0x2c]
cmp ebp, edx
setne dl
or edx, edi
test dl, dl
je 0x4a9a28
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x50]
movzx eax, byte [esp + 0x22]
movzx ebp, byte [esp + 0x23]
jmp 0x4a97c4
lea eax, [0x6f44e0]
mov dword [esp], eax
lea eax, [0x7b033c]
mov dword [esp + 4], eax
call fcn.00438b10
mov eax, ebx
mov ecx, 0x100
call fcn.00468ee0
mov esi, ecx
mov eax, ebx
mov ecx, 0x100
call fcn.00468fc0
lea eax, [0x6f44e0]
mov dword [esp], eax
lea eax, [0x7b0334]
mov dword [esp + 4], eax
call fcn.00438b10
nop
call fcn.00467a60
jmp fcn.004a95a0