Function at 0x45a9b0
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 0x45ac0b
sub esp, 0x38
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x10]
test edx, edx
je 0x45ab87
movzx edx, byte [ecx + 0x28]
movzx ebx, byte [ecx + 0x29]
cmp dl, 4
jne 0x45a9e8
and ebx, 0xfffffffd
movzx ebp, byte [esp + 0x41]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x45a9f6
and ebx, 0xfffffffd
mov ebp, dword [eax + 0x18]
mov esi, dword [eax + 4]
test ebp, ebp
jne 0x45aae7
movzx ebp, byte [eax + 0x2d]
xchg ebp, eax
test al, 8
xchg ebp, eax
je 0x45aa97
mov ebp, dword [eax + 0x24]
mov edi, dword [ebp + 0x18]
cmp dword [edi], ebp
jne 0x45aa97
mov ebp, dword [edi + 0x50]
test ebp, ebp
je 0x45aa97
cmp dword [ebp + 0x18], edi
jne 0x45aa97
cmp dl, 0xc
je 0x45aa4e
cmp dl, 0x13
jne 0x45aa97
mov edx, ebp
nop
mov dword [eax + 0x24], ebp
mov ebp, dword [edx + 0x1c]
mov dword [eax + 0x14], ebp
mov edx, dword [edx + 0xc4]
dec edx
mov dword [eax + 0x28], edx
and ebx, 0xfffffffd
jmp 0x45aa97
mov dword [esp + 0x34], ebp
mov ecx, ebp
nop
mov dword [eax + 0x24], ebp
mov edx, dword [ecx + 0x20]
mov dword [eax + 8], edx
mov dword [esp], edx
call fcn.00454c10
mov ecx, dword [esp + 4]
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x3c]
mov dword [eax], ecx
mov dword [eax + 4], esi
mov edx, dword [esp + 0x34]
mov ebx, dword [edx + 0x30]
movzx ebp, byte [ecx + 0x29]
mov dword [eax + 0x10], ebx
mov ebx, dword [edx + 0x1c]
mov dword [eax + 0x14], ebx
mov edx, dword [edx + 0xc4]
dec edx
mov dword [eax + 0x28], edx
mov ebx, ebp
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], ecx
mov byte [esp + 0x23], bl
mov edx, dword [eax + 8]
lea ebp, [eax + 0x30]
mov edi, dword [ecx + 0x10]
mov dword [esp], ecx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebp
mov byte [esp + 0x14], 1
call fcn.00454d50
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x14]
add ecx, dword [esp + 0x18]
add ecx, 4
mov dword [eax + 0x18], ecx
movzx ebx, byte [esp + 0x23]
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
test bl, 1
je 0x45aaf5
mov dword [eax + 0x10], 0
jmp 0x45ab34
test bl, 2
je 0x45ab22
movzx edx, byte [esp + 0x40]
test dl, dl
je 0x45ab0c
movzx ebx, byte [eax + 0x2d]
test bl, 3
je 0x45ab22
movzx ebx, byte [eax + 0x2d]
test bl, 3
jne 0x45ab19
test dl, dl
je 0x45ab93
mov dword [eax + 0x10], 0
jmp 0x45ab34
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x45ab34
mov ecx, dword [eax + 0x18]
add ecx, 0xfffffffc
mov ecx, dword [ecx]
mov dword [eax + 0x10], ecx
mov ecx, dword [eax + 0x18]
add ecx, 0xfffffffc
mov dword [eax + 0x1c], ecx
mov ecx, dword [eax + 0x18]
mov dword [eax + 0x20], ecx
mov ecx, dword [eax + 8]
mov dword [eax + 0xc], ecx
cmp byte [eax + 0x2c], 0x12
jne 0x45ab83
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
test edx, edx
jne 0x45ab61
mov dword [eax + 0xc], 0
jmp 0x45ab83
mov edx, dword [eax + 4]
mov ecx, dword [ecx]
mov dword [esp], edx
mov dword [esp + 4], ecx
call fcn.004546b0
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0xc]
add ecx, dword [esp + 8]
inc ecx
mov dword [eax + 0xc], ecx
add esp, 0x38
ret
mov dword [esp], eax
call fcn.0045af50
add esp, 0x38
ret
test ecx, ecx
jne 0x45abf2
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], eax
call fcn.0043af60
lea eax, [0x749f32]
mov dword [esp], eax
mov dword [esp + 4], 0x27
call fcn.0043b7e0
mov eax, dword [esp + 0x30]
mov dword [esp], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 4], eax
call fcn.0043b7e0
call fcn.0043b170
call fcn.0043afc0
lea eax, [0x73b93b]
mov dword [esp], eax
mov dword [esp + 4], 9
call fcn.00439230
mov eax, dword [ecx + 4]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004547e0
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
jmp 0x45ab9b
call fcn.00467a60
jmp fcn.0045a9b0