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

Disassembly:
lea r12, [rsp - 0x58]
cmp r12, qword [r14 + 0x10]
jbe 0x51d731
sub rsp, 0xd8
mov qword [rsp + 0xd0], rbp
lea rbp, [rsp + 0xd0]
mov qword [rsp + 0xe0], rax
lea rcx, [rsi - 2]
cmp rcx, 0x3c
ja 0x51d71d
nop dword [rax]
test rbx, rbx
je 0x51d377
mov byte [rsp + 0xf8], dil
mov qword [rsp + 0xe8], rbx
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0x100], rsi
xorps xmm0, xmm0
cvtsi2sd xmm0, rsi
mov rcx, qword [rax + rbx*8 - 8]
mov qword [rsp + 0xa8], rcx
nop
call fcn.004707a0
mov rax, qword [rsp + 0xa8]
mov rcx, rax
shr rax, 1
or rax, rcx
mov rcx, rax
shr rax, 2
or rax, rcx
mov rcx, rax
shr rax, 4
or rax, rcx
mov rcx, rax
shr rax, 8
or rax, rcx
mov rcx, rax
shr rax, 0x10
or rax, rcx
mov rcx, rax
shr rax, 0x20
or rax, rcx
bsr rax, rax
mov rcx, 0xffffffffffffffff
cmove rax, rcx
mov rcx, qword [rsp + 0xe8]
lea rdx, [rcx - 1]
shl rdx, 6
lea rax, [rax + rdx]
lea rax, [rax + 1]
xorps xmm1, xmm1
cvtsi2sd xmm1, rax
divsd xmm1, xmm0
cvttsd2si rbx, xmm1
lea rax, [rbx + 1]
lea rdx, [rbx + 2]
movzx ebx, byte [rsp + 0xf8]
movzx esi, bl
test rsi, rsi
cmovne rax, rdx
mov qword [rsp + 0x98], rax
mov rdx, rax
lea rax, [0x006bb680]
mov rbx, rdx
mov rcx, rdx
call fcn.0044a940
mov rbx, qword [rsp + 0x100]
mov rcx, rbx
neg rbx
and rbx, rcx
cmp rcx, rbx
jne 0x51d35b
bsf rcx, rcx
mov qword [rsp + 0x68], rcx
cmp rcx, 0x40
sbb rdx, rdx
nop
mov esi, 1
shl rsi, cl
and rsi, rdx
dec rsi
mov rdi, qword [rsp + 0xe0]
mov r8, qword [rdi]
mov rbx, qword [rsp + 0x98]
mov r9, qword [rsp + 0xe8]
mov r10, rbx
mov r11d, 1
mov r12d, 0x40
jmp 0x51d5ab
mov rdx, rax
mov rax, 0xffffffffffffffff
mov rbx, rdx
xor edx, edx
div rcx
mov rdx, rcx
mov esi, 1
jmp 0x51d3a8
lea rax, [0x006bd140]
nop
call fcn.0040daa0
mov byte [rax], 0x30
mov ebx, 1
mov rcx, rbx
mov rbp, qword [rsp + 0xd0]
add rsp, 0xd8
nop
ret
imul rcx, rdx
inc rsi
cmp rax, rcx
jae 0x51d3a1
mov qword [rsp + 0xc8], rbx
mov qword [rsp + 0x88], rcx
mov qword [rsp + 0x90], rsi
mov rax, qword [rsp + 0xe8]
mov rbx, rdx
mov rdi, rcx
mov rcx, rsi
call fcn.0051df80
mov qword [rsp + 0xb8], rax
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x78], rcx
nop
mov rdx, qword [rsp + 0xe8]
cmp rdx, 1
jne 0x51d41d
mov qword [rsp + 0xb0], 0
mov esi, 1
lea rdi, [rsp + 0xb0]
mov r8d, 1
jmp 0x51d45a
lea rcx, [rdx + 4]
mov qword [rsp + 0x60], rcx
lea rax, [0x006baec0]
mov rbx, rdx
call fcn.0044a940
mov rcx, qword [rsp + 0x78]
mov rdx, qword [rsp + 0xe8]
mov rbx, qword [rsp + 0x70]
mov rsi, rdx
mov rdi, rax
mov r8, qword [rsp + 0x60]
mov rax, qword [rsp + 0xb8]
cmp rdx, rsi
mov r12, rsi
cmovl rsi, rdx
mov rdx, qword [rsp + 0xe0]
cmp rdx, rdi
je 0x51d4c5
mov qword [rsp + 0x80], r8
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xc0], rdi
shl rsi, 3
mov rax, rdi
mov rbx, rdx
mov rcx, rsi
call fcn.00466860
mov rax, qword [rsp + 0xb8]
mov rcx, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x70]
mov rdi, qword [rsp + 0xc0]
mov r8, qword [rsp + 0x80]
mov r12, qword [rsp + 0xa0]
mov qword [rsp], rax
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rcx
mov rax, rdi
mov rbx, r12
mov rcx, r8
mov rdi, qword [rsp + 0xc8]
mov rsi, qword [rsp + 0x98]
mov r8, rsi
mov r9, qword [rsp + 0x100]
mov r10, qword [rsp + 0x90]
mov r11, qword [rsp + 0x88]
call fcn.0051d780
mov r8, qword [rsp + 0x98]
mov rdi, qword [rsp + 0xc8]
xor eax, eax
nop
jmp 0x51d525
inc rax
cmp rax, r8
jae 0x51d594
movzx edx, byte [rax + rdi]
cmp dl, 0x30
je 0x51d522
movzx edx, byte [rsp + 0xf8]
test dl, dl
je 0x51d54f
lea rdx, [rax - 1]
cmp r8, rdx
jbe 0x51d589
mov byte [rax + rdi - 1], 0x2d
jmp 0x51d552
mov rdx, rax
cmp rdx, r8
ja 0x51d57e
sub r8, rdx
mov rcx, r8
neg r8
sar r8, 0x3f
and rdx, r8
lea rax, [rdi + rdx]
mov rbx, rcx
mov rbp, qword [rsp + 0xd0]
add rsp, 0xd8
ret
mov rax, rdx
mov rcx, r8
call fcn.00465f80
mov rax, rdx
mov rcx, r8
call fcn.00465ec0
mov rcx, r8
call fcn.00465ec0
inc r11
mov rcx, r12
mov r12, rdx
mov rdx, rbx
mov rbx, r13
cmp r9, r11
jg 0x51d6c1
jmp 0x51d656
test r12, r12
jne 0x51d5d2
mov r8, qword [rdi + r11*8]
mov r12, rcx
mov r13, rbx
mov rbx, rdx
mov edx, 0x40
jmp 0x51d59c
cmp r12, 0x40
sbb r13, r13
mov r15, qword [rdi + r11*8]
mov rcx, r12
shl r15, cl
and r15, r13
or r8, r15
and r8, rsi
cmp r8, 0x3e
jae 0x51d6f8
lea r13, [rbx - 1]
lea r15, [0x0073028d]
movzx r8d, byte [r8 + r15]
cmp r10, r13
jbe 0x51d6ed
mov r15, qword [rsp + 0x68]
mov r12, r15
sub r15, rcx
cmp r15, 0x40
mov rcx, rdx
sbb rdx, rdx
mov byte [rbx + rax - 1], r8b
mov r8, qword [rdi + r11*8]
mov rbx, rcx
mov rcx, r15
shr r8, cl
and r8, rdx
lea rdx, [rcx - 0x40]
neg rdx
jmp 0x51d59c
mov byte [rbx + rax - 1], r8b
shr rdi, cl
and rdi, rdx
mov r8, rdi
mov rbx, r9
test r8, r8
je 0x51d67e
mov rdi, r8
and r8, rsi
cmp r8, 0x3e
jae 0x51d697
lea r9, [rbx - 1]
lea r11, [0x0073028d]
movzx r8d, byte [r8 + r11]
cmp r10, r9
ja 0x51d645
jmp 0x51d68c
mov rdi, rax
mov r8, r10
mov rax, rbx
jmp 0x51d533
mov rax, r9
mov rcx, r10
call fcn.00465ec0
mov rax, r8
mov ecx, 0x3e
nop
call fcn.00465ee0
mov byte [rbx + rax - 1], r8b
shr r13, cl
and r13, rdx
sub r12, rcx
mov r9, qword [rsp + 0xe8]
mov r8, r13
mov rbx, r15
cmp rcx, r12
ja 0x51d5b9
mov r13, r8
and r8, rsi
cmp r8, 0x3e
jae 0x51d710
lea r15, [rbx - 1]
lea r9, [0x0073028d]
movzx r8d, byte [r8 + r9]
cmp r10, r15
ja 0x51d6a5
jmp 0x51d705
mov rax, r13
mov rcx, r10
call fcn.00465ec0
mov rax, r8
mov ecx, 0x3e
call fcn.00465ee0
mov rax, r15
mov rcx, r10
call fcn.00465ec0
mov rax, r8
mov ecx, 0x3e
call fcn.00465ee0
lea rax, [0x006bb4c0]
lea rbx, [0x007f0d40]
call fcn.00436580
nop
mov qword [rsp + 8], rax
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rcx
mov byte [rsp + 0x20], dil
mov qword [rsp + 0x28], rsi
call fcn.00463860
mov rax, qword [rsp + 8]
mov rbx, qword [rsp + 0x10]
mov rcx, qword [rsp + 0x18]
movzx edi, byte [rsp + 0x20]
mov rsi, qword [rsp + 0x28]
jmp fcn.0051d1c0