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

Disassembly:
lea r12, [rsp - 0x58]
cmp r12, qword [r14 + 0x10]
jbe 0x5130d1
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 0x5130bd
nop dword [rax]
test rbx, rbx
je 0x512d17
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.004788e0
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, [0x006578a0]
mov rbx, rdx
mov rcx, rdx
call fcn.0044a840
mov rbx, qword [rsp + 0x100]
mov rcx, rbx
neg rbx
and rbx, rcx
cmp rcx, rbx
jne 0x512cfb
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 0x512f4b
mov rdx, rax
mov rax, 0xffffffffffffffff
mov rbx, rdx
xor edx, edx
div rcx
mov rdx, rcx
mov esi, 1
jmp 0x512d48
lea rax, [0x00658c80]
nop
call fcn.0040d960
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 0x512d41
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.00513920
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 0x512dbd
mov qword [rsp + 0xb0], 0
mov esi, 1
lea rdi, [rsp + 0xb0]
mov r8d, 1
jmp 0x512dfa
lea rcx, [rdx + 4]
mov qword [rsp + 0x60], rcx
lea rax, [0x00657160]
mov rbx, rdx
call fcn.0044a840
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 0x512e65
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.004662e0
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.00513120
mov r8, qword [rsp + 0x98]
mov rdi, qword [rsp + 0xc8]
xor eax, eax
nop
jmp 0x512ec5
inc rax
cmp rax, r8
jae 0x512f34
movzx edx, byte [rax + rdi]
cmp dl, 0x30
je 0x512ec2
movzx edx, byte [rsp + 0xf8]
test dl, dl
je 0x512eef
lea rdx, [rax - 1]
cmp r8, rdx
jbe 0x512f29
mov byte [rax + rdi - 1], 0x2d
jmp 0x512ef2
mov rdx, rax
cmp rdx, r8
ja 0x512f1e
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.00465a00
mov rax, rdx
mov rcx, r8
call fcn.00465940
mov rcx, r8
call fcn.00465940
inc r11
mov rcx, r12
mov r12, rdx
mov rdx, rbx
mov rbx, r13
cmp r9, r11
jg 0x513061
jmp 0x512ff6
test r12, r12
jne 0x512f72
mov r8, qword [rdi + r11*8]
mov r12, rcx
mov r13, rbx
mov rbx, rdx
mov edx, 0x40
jmp 0x512f3c
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 0x513098
lea r13, [rbx - 1]
lea r15, [0x006b706d]
movzx r8d, byte [r8 + r15]
cmp r10, r13
jbe 0x51308d
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 0x512f3c
mov byte [rbx + rax - 1], r8b
shr rdi, cl
and rdi, rdx
mov r8, rdi
mov rbx, r9
test r8, r8
je 0x51301e
mov rdi, r8
and r8, rsi
cmp r8, 0x3e
jae 0x513037
lea r9, [rbx - 1]
lea r11, [0x006b706d]
movzx r8d, byte [r8 + r11]
cmp r10, r9
ja 0x512fe5
jmp 0x51302c
mov rdi, rax
mov r8, r10
mov rax, rbx
jmp 0x512ed3
mov rax, r9
mov rcx, r10
call fcn.00465940
mov rax, r8
mov ecx, 0x3e
nop
call fcn.00465960
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 0x512f59
mov r13, r8
and r8, rsi
cmp r8, 0x3e
jae 0x5130b0
lea r15, [rbx - 1]
lea r9, [0x006b706d]
movzx r8d, byte [r8 + r9]
cmp r10, r15
ja 0x513045
jmp 0x5130a5
mov rax, r13
mov rcx, r10
call fcn.00465940
mov rax, r8
mov ecx, 0x3e
call fcn.00465960
mov rax, r15
mov rcx, r10
call fcn.00465940
mov rax, r8
mov ecx, 0x3e
call fcn.00465960
lea rax, [0x006576e0]
lea rbx, [0x007186d0]
call fcn.00436420
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.004632e0
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.00512b60