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

Disassembly:
mov ecx, dword [0x99504c]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x14]
cmp eax, dword [ecx + 8]
jbe 0x4ac159
sub esp, 0x94
mov ecx, dword [esp + 0xac]
lea edx, [ecx - 2]
cmp edx, 0x22
ja 0x4ac140
mov dword [esp + 0x4f], 0
lea edi, [esp + 0x50]
xor eax, eax
call fcn.004690f0
movzx ecx, byte [esp + 0xb0]
test cl, cl
je 0x4aba99
mov edx, dword [esp + 0xa4]
sub eax, edx
mov edx, 0
mov ebx, dword [esp + 0xa8]
sbb edx, ebx
jmp 0x4abaa7
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xa8]
mov ebx, dword [esp + 0xac]
cmp ebx, 0xa
jne 0x4ababd
mov ebx, 0x41
jmp 0x4abeac
lea ebp, [ebx - 1]
test ebx, ebp
jne 0x4abaf0
bsf ebp, ebx
and ebp, 7
mov esi, ebx
sar ebx, 0x1f
mov dword [esp + 0x40], ebx
lea edi, [esi - 1]
mov dword [esp + 0x28], edi
mov dword [esp + 0x44], eax
mov eax, 0x41
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
jmp 0x4abdf7
mov ebp, ebx
sar ebx, 0x1f
mov dword [esp + 0x40], ebx
mov esi, 0x41
jmp 0x4abb21
mov edi, dword [esp + 0x14]
mov byte [esp + ebp + 0x4e], dl
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0xac]
mov edx, edi
mov esi, eax
mov eax, ecx
movzx ecx, byte [esp + 0xb0]
mov dword [esp + 0x2c], esi
cmp edx, ebx
xchg edi, ebx
sete bl
xchg edi, ebx
seta cl
cmp ebp, eax
xchg esi, ebx
setbe bl
xchg esi, ebx
and esi, edi
or ecx, esi
test cl, cl
je 0x4abb97
mov dword [esp + 0x3c], eax
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], ebp
call fcn.004606c0
mov eax, dword [esp + 0x10]
mov ecx, eax
mov eax, dword [esp + 0xac]
mul ecx
mov edx, dword [esp + 0x3c]
sub edx, eax
cmp edx, 0x24
jae 0x4abd84
mov ebp, dword [esp + 0x2c]
lea eax, [ebp - 1]
lea esi, [0x74890b]
movzx edx, byte [esi + edx]
cmp eax, 0x41
jb 0x4abb00
jmp 0x4abd7a
cmp eax, 0x24
jae 0x4abd70
mov edx, dword [esp + 0x2c]
lea ebx, [edx - 1]
lea ebp, [0x74890b]
movzx ebp, byte [ebp + eax]
cmp ebx, 0x41
jae 0x4abd64
xchg ebp, eax
mov byte [esp + edx + 0x4e], al
xchg ebp, eax
movzx edx, byte [esp + 0xb0]
test dl, dl
je 0x4abbe0
lea eax, [ebx - 1]
cmp eax, 0x41
jae 0x4abd5a
mov byte [esp + ebx + 0x4e], 0x2d
jmp 0x4abbe2
mov eax, ebx
movzx edx, byte [esp + 0xb1]
test dl, dl
je 0x4abcdd
cmp eax, 0x41
ja 0x4abd50
mov ecx, dword [esp + 0x9c]
mov edx, ecx
sub ecx, eax
add ecx, 0x41
lea ebx, [eax - 0x41]
neg ebx
mov ebp, ebx
neg ebx
sar ebx, 0x1f
and eax, ebx
mov ebx, dword [esp + 0xa0]
cmp ebx, ecx
jb 0x4abc2b
mov esi, dword [esp + 0x98]
jmp 0x4abc77
mov dword [esp + 0x38], ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ebp
lea eax, [0x6f4820]
mov dword [esp + 0x10], eax
call fcn.0044e6e0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x38]
mov esi, eax
mov ebx, edx
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x90], esi
mov dword [esp + 0x34], ecx
add edx, esi
mov dword [esp], edx
lea eax, [esp + eax + 0x4f]
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
call fcn.004697f0
mov eax, dword [esp + 0x90]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
add esp, 0x94
ret
cmp eax, 0x41
ja 0x4abd46
mov dword [esp], 0
lea ecx, [eax - 0x41]
neg ecx
mov edx, ecx
neg ecx
sar ecx, 0x1f
and eax, ecx
lea eax, [esp + eax + 0x4f]
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.004523c0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], ecx
add esp, 0x94
ret
mov ecx, 0x41
call fcn.00468f30
mov ecx, 0x41
call fcn.00468f30
mov ecx, 0x41
call fcn.00468ed0
mov eax, ebx
mov ecx, 0x41
call fcn.00468ed0
mov ecx, 0x24
call fcn.00468ee0
mov ecx, 0x41
call fcn.00468ed0
mov eax, edx
mov ecx, 0x24
call fcn.00468ee0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x2c], ecx
xchg edi, eax
mov byte [esp + esi + 0x4e], al
xchg edi, eax
mov ecx, ebp
shr eax, cl
lea edi, [ecx - 0x20]
mov ecx, edi
shr edx, cl
neg ecx
mov dword [esp + 0x30], ecx
mov ebx, dword [esp + 0x3c]
shl ebx, cl
mov ecx, ebp
mov esi, dword [esp + 0x3c]
shr esi, cl
mov ecx, dword [esp + 0x30]
cmp ecx, 0x20
sbb ecx, ecx
and ebx, ecx
or eax, ebx
cmp edi, 0x20
sbb ecx, ecx
and edx, ecx
or eax, edx
mov ecx, dword [esp + 0xac]
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
movzx ecx, byte [esp + 0xb0]
mov edx, esi
mov esi, dword [esp + 0xac]
cmp edx, ebx
sete cl
seta bl
cmp esi, eax
xchg esi, ebx
setbe bl
xchg esi, ebx
and esi, ecx
or esi, ebx
xchg esi, eax
test al, al
xchg esi, eax
je 0x4abe35
and edi, eax
cmp edi, 0x24
jae 0x4abe88
mov esi, dword [esp + 0x2c]
lea ecx, [esi - 1]
lea ebx, [0x74890b]
movzx edi, byte [ebx + edi]
cmp ecx, 0x41
jb 0x4abd90
jmp 0x4abe7c
cmp eax, 0x24
jae 0x4abe72
mov edx, dword [esp + 0x2c]
lea ebx, [edx - 1]
lea ebp, [0x74890b]
movzx ebp, byte [ebp + eax]
cmp ebx, 0x41
jae 0x4abe66
xchg ebp, eax
mov byte [esp + edx + 0x4e], al
xchg ebp, eax
movzx edx, byte [esp + 0xb0]
test dl, dl
jmp 0x4abbcb
mov eax, ebx
mov ecx, 0x41
call fcn.00468ed0
mov ecx, 0x24
call fcn.00468ee0
mov eax, ecx
mov ecx, 0x41
call fcn.00468ed0
mov eax, edi
mov ecx, 0x24
call fcn.00468ee0
movzx ebp, byte [ebp]
xchg ebp, ebx
mov byte [esp + eax + 0x4e], bl
xchg ebp, ebx
movzx ecx, byte [esp + 0xb0]
mov eax, dword [esp + 0x20]
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
xchg esi, ebx
seta bl
xchg esi, ebx
cmp eax, 0x3b9aca00
xchg edi, ebx
setae bl
xchg edi, ebx
and edi, ebp
or edi, esi
xchg edi, eax
test al, al
xchg edi, eax
je 0x4abf69
mov dword [esp + 0x3c], eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x3b9aca00
call fcn.004606c0
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov ecx, eax
mov eax, 0x3b9aca00
mul ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x24], edx
mov ebx, dword [esp + 0x3c]
sub ebx, eax
mov eax, dword [esp + 0x2c]
mov ebp, 4
jmp 0x4ac09f
mov ebp, ebx
shl ebx, 1
inc ebx
cmp ebx, 0xc8
jae 0x4ac108
lea ebx, [eax - 1]
lea esi, [0x75318b]
lea ebp, [esi + ebp*2 + 1]
cmp ebx, 0x41
jb 0x4abe94
jmp 0x4ac0fc
movzx ebp, byte [ebp]
xchg ebp, eax
mov byte [esp + ebx + 0x4d], al
xchg ebp, eax
movzx ecx, byte [esp + 0xb0]
mov ebx, eax
mov eax, edx
cmp eax, 0x64
jb 0x4abfd2
mov edx, eax
shr eax, 1
mov ebp, eax
mov eax, 0xa3d70a3e
mov esi, edx
mul ebp
shr edx, 5
imul ebp, edx, 0x64
sub esi, ebp
mov eax, esi
shl eax, 1
lea ebp, [eax + 1]
cmp ebp, 0xc8
jae 0x4ac07d
lea ebp, [ebx - 1]
lea edi, [0x75318b]
lea ecx, [edi + esi*2 + 1]
cmp ebp, 0x41
jae 0x4ac071
movzx ebp, byte [ecx]
xchg ebp, eax
mov byte [esp + ebx + 0x4e], al
xchg ebp, eax
cmp eax, 0xc8
jae 0x4ac067
lea eax, [ebx - 2]
lea ebp, [edi + esi*2]
cmp eax, 0x41
jb 0x4abf53
jmp 0x4ac05d
mov edx, eax
shl edx, 1
lea ebp, [edx + 1]
cmp ebp, 0xc8
jae 0x4ac051
lea ebp, [ebx - 1]
lea esi, [0x75318b]
lea edi, [esi + eax*2 + 1]
cmp ebp, 0x41
jae 0x4ac045
movzx edi, byte [edi]
xchg edi, eax
mov byte [esp + ebx + 0x4e], al
xchg edi, eax
cmp eax, 0xa
jb 0x4ac022
cmp edx, 0xc8
jae 0x4ac039
lea edx, [ebx - 2]
lea ebp, [esi + eax*2]
cmp edx, 0x41
jae 0x4ac02d
movzx esi, byte [ebp]
xchg esi, eax
mov byte [esp + ebx + 0x4d], al
xchg esi, eax
test cl, cl
jmp 0x4ac026
test cl, cl
mov edx, ebp
mov ebx, edx
jmp 0x4abbcb
mov eax, edx
mov ecx, 0x41
call fcn.00468ed0
mov eax, edx
mov ecx, 0xc8
call fcn.00468ee0
mov eax, ebp
mov ecx, 0x41
call fcn.00468ed0
mov eax, ebp
mov ecx, 0xc8
call fcn.00468ee0
mov ecx, 0x41
call fcn.00468ed0
mov ecx, 0xc8
call fcn.00468ee0
mov eax, ebp
mov ecx, 0x41
call fcn.00468ed0
mov eax, ebp
mov ecx, 0xc8
call fcn.00468ee0
movzx esi, byte [ebx]
xchg esi, eax
mov byte [esp + edi + 0x4d], al
xchg esi, eax
dec ebp
mov ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
test ebp, ebp
jle 0x4abf27
mov esi, ebx
shr ebx, 1
mov edi, eax
mov eax, 0xa3d70a3e
mul ebx
shr edx, 5
imul ebx, edx, 0x64
sub esi, ebx
mov eax, esi
shl eax, 1
lea ebx, [eax + 1]
cmp ebx, 0xc8
jae 0x4ac134
mov dword [esp + 0x30], edx
lea ebx, [edi - 1]
lea edx, [0x75318b]
lea ecx, [edx + esi*2 + 1]
cmp ebx, 0x41
jae 0x4ac128
movzx ebx, byte [ecx]
mov byte [esp + edi + 0x4e], bl
cmp eax, 0xc8
jae 0x4ac11e
lea eax, [edi - 2]
lea ebx, [edx + esi*2]
cmp eax, 0x41
jb 0x4ac089
jmp 0x4ac114
mov eax, ebx
mov ecx, 0x41
call fcn.00468ed0
mov eax, ebx
mov ecx, 0xc8
call fcn.00468ee0
mov ecx, 0x41
call fcn.00468ed0
mov ecx, 0xc8
call fcn.00468ee0
mov eax, ebx
mov ecx, 0x41
call fcn.00468ed0
mov eax, ebx
mov ecx, 0xc8
call fcn.00468ee0
lea eax, [0x6f44e0]
mov dword [esp], eax
lea eax, [0x7b0354]
mov dword [esp + 4], eax
call fcn.00438b10
nop
call fcn.00467a60
jmp fcn.004aba30