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

Disassembly:
lea r12, [rsp - 0x50]
cmp r12, qword [r14 + 0x10]
jbe 0x45b26b
push rbp
mov rbp, rsp
sub rsp, 0xc8
mov rdx, qword [rax + 0x18]
nop
test rdx, rdx
je 0x45af3a
mov qword [rsp + 0xd8], rax
mov qword [rsp + 0x48], rdx
mov rcx, qword [rax]
mov qword [rsp + 0x80], rcx
mov rdx, qword [rax + 8]
mov qword [rsp + 0x78], rdx
mov ebx, dword [rcx]
mov rax, rdx
call fcn.0045dce0
mov rdi, qword [rsp + 0x48]
cmp rax, rdi
jne 0x45aca5
mov eax, 0xffffffff
jmp 0x45acca
dec rdi
mov qword [rsp + 0x48], rdi
mov rax, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x78]
mov ecx, 1
nop
call fcn.0045eea0
mov rdi, qword [rsp + 0x48]
mov qword [rsp + 0x48], rdi
mov rcx, qword [rsp + 0xd8]
mov rdx, qword [rcx + 0x38]
sub rdx, qword [rcx + 0x28]
cmp eax, 0xffffffff
mov esi, 0
cmove eax, esi
mov dword [rsp + 0x20], eax
test rdx, rdx
jbe 0x45ad9a
mov rsi, qword [rsp + 0x80]
cmp byte [rsi + 0x2b], 1
ja 0x45ad0f
mov r9, qword [rsp + 0x78]
xor r8d, r8d
jmp 0x45ad43
lea r8, [rsi + 0x2b]
mov r9d, dword [rsi + 0x1c]
lea r8, [r8 + r9*4]
lea r8, [r8 + 5]
mov r8d, dword [r8]
mov r9, qword [rsp + 0x78]
mov r10d, r8d
add r8, qword [r9 + 0x140]
cmp r10d, 0xffffffff
sete r10b
movzx r10d, r10b
dec r10
and r8, r10
mov qword [rsp + 0x50], rdx
test r8, r8
je 0x45b1bb
mov r10d, dword [r8]
test r10d, r10d
jle 0x45b1bb
mov edx, dword [r8 + 4]
test edx, edx
jle 0x45ad94
mov qword [rsp + 0xb8], r8
test eax, eax
jl 0x45b0ea
cmp r10d, eax
jle 0x45b0ea
lea ebx, [rdx + 7]
sar ebx, 3
imul ebx, eax
movsxd rbx, ebx
lea rbx, [r8 + rbx]
lea rbx, [rbx + 8]
jmp 0x45ad9e
xor edx, edx
xor ebx, ebx
jmp 0x45ad9e
xor edx, edx
xor ebx, ebx
mov qword [rsp + 0xc0], rbx
mov dword [rsp + 0x24], edx
mov rax, rcx
call fcn.0045a960
test eax, eax
jle 0x45ae7c
test rbx, rbx
je 0x45add4
mov rdx, qword [rsp + 0x80]
mov r11, qword [rsp + 0x78]
mov r12d, eax
jmp 0x45ae8c
mov rdx, qword [rsp + 0x80]
cmp byte [rdx + 0x2b], 0
ja 0x45adec
mov r11, qword [rsp + 0x78]
xor r10d, r10d
jmp 0x45ae20
lea r10, [rdx + 0x2b]
mov r11d, dword [rdx + 0x1c]
lea r10, [r10 + r11*4]
lea r10, [r10 + 1]
mov r10d, dword [r10]
mov r11, qword [rsp + 0x78]
mov r12d, r10d
add r10, qword [r11 + 0x140]
cmp r12d, 0xffffffff
sete r12b
movzx r12d, r12b
dec r12
and r10, r12
test r10, r10
je 0x45b03b
mov r12d, dword [r10]
test r12d, r12d
jle 0x45b03b
mov qword [rsp + 0xb0], r10
mov r13d, dword [rsp + 0x20]
test r13d, r13d
jl 0x45af5e
cmp r12d, r13d
jle 0x45af5e
mov r12d, dword [r10 + 4]
test r12d, r12d
jne 0x45ae62
xor r12d, r12d
jmp 0x45ae8c
lea r15d, [r12 + 7]
sar r15d, 3
imul r13d, r15d
movsxd r13, r13d
lea rbx, [r10 + r13]
lea rbx, [rbx + 8]
jmp 0x45ae8c
mov rdx, qword [rsp + 0x80]
mov r11, qword [rsp + 0x78]
mov r12d, eax
test cl, cl
je 0x45ae9f
mov r10d, 1
lea r11, [0x0203df40]
jmp 0x45af16
cmp byte [rdx + 0x2b], 2
ja 0x45aea9
xor edx, edx
jmp 0x45aed6
lea r10, [rdx + 0x2b]
mov edx, dword [rdx + 0x1c]
lea rdx, [r10 + rdx*4]
lea rdx, [rdx + 9]
mov edx, dword [rdx]
mov r10d, edx
add rdx, qword [r11 + 0x140]
cmp r10d, 0xffffffff
sete r10b
movzx r10d, r10b
dec r10
and rdx, r10
test rdx, rdx
je 0x45af10
mov r10, qword [rdx]
nop
nop
test r10, r10
jl 0x45af59
mov qword [rsp + 0xa8], rdx
mov eax, 0x10
mul r10
jo 0x45af54
mov rdx, qword [rsp + 0xa8]
add rdx, 8
mov r11, rdx
neg rdx
cmp rax, rdx
jbe 0x45af16
jmp 0x45af54
xor r10d, r10d
xor r11d, r11d
mov eax, dword [rsp + 0x24]
mov ecx, r12d
mov rdi, rbx
mov rsi, r11
mov r8, r10
mov r9, r8
mov rbx, qword [rsp + 0xc0]
add rsp, 0xc8
pop rbp
ret
xor eax, eax
xor ebx, ebx
mov ecx, eax
mov rdi, rbx
xor esi, esi
xor r8d, r8d
mov r9, r8
add rsp, 0xc8
pop rbp
ret
call fcn.0046f020
call fcn.0046f020
movsxd rcx, r13d
mov qword [rsp + 0x70], rcx
mov ebx, dword [rdx + 4]
mov rax, r11
call fcn.0045de00
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x28], rbx
mov rcx, qword [rsp + 0xb0]
movsxd rcx, dword [rcx]
mov qword [rsp + 0x68], rcx
call fcn.00441a60
lea rax, [0x0109c0f3]
mov ebx, 0x13
nop
call fcn.004422e0
mov rax, qword [rsp + 0x70]
call fcn.00442100
lea rax, [0x0108a130]
mov ebx, 5
nop dword [rax + rax]
call fcn.004422e0
mov rax, qword [rsp + 0x68]
call fcn.00442100
lea rax, [0x010ac058]
mov ebx, 0x1c
nop dword [rax + rax]
call fcn.004422e0
mov rax, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x28]
call fcn.004422e0
lea rax, [0x01091db0]
mov ebx, 0xb
call fcn.004422e0
mov rax, qword [rsp + 0x48]
call fcn.00442160
lea rax, [0x01087885]
mov ebx, 2
nop
call fcn.004422e0
call fcn.00441ac0
lea rax, [0x01097c88]
mov ebx, 0x10
call fcn.0043ffc0
shl eax, 3
movsxd rcx, eax
mov qword [rsp + 0x60], rcx
mov ebx, dword [rdx + 4]
mov rax, r11
call fcn.0045de00
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x30], rbx
mov rcx, qword [rsp + 0xd8]
mov rcx, qword [rcx + 0x40]
mov qword [rsp + 0x58], rcx
call fcn.00441a60
lea rax, [0x010966d6]
mov ebx, 0xf
call fcn.004422e0
mov rax, qword [rsp + 0x90]
mov rbx, qword [rsp + 0x30]
call fcn.004422e0
lea rax, [0x0109523e]
mov ebx, 0xe
call fcn.004422e0
mov rax, qword [rsp + 0x58]
call fcn.00442160
lea rax, [0x017988f0]
mov ebx, 1
nop
call fcn.004422e0
mov rax, qword [rsp + 0x60]
call fcn.00442160
call fcn.00441ca0
call fcn.00441ac0
lea rax, [0x01097c78]
mov ebx, 0x10
call fcn.0043ffc0
movsxd rcx, eax
mov qword [rsp + 0x70], rcx
mov ebx, dword [rsi + 4]
mov rax, r9
call fcn.0045de00
mov qword [rsp + 0x98], rax
mov qword [rsp + 0x38], rbx
mov rcx, qword [rsp + 0xb8]
movsxd rcx, dword [rcx]
mov qword [rsp + 0x68], rcx
call fcn.00441a60
lea rax, [0x0109c0f3]
mov ebx, 0x13
call fcn.004422e0
mov rax, qword [rsp + 0x70]
call fcn.00442100
lea rax, [0x0108a130]
mov ebx, 5
call fcn.004422e0
mov rax, qword [rsp + 0x68]
call fcn.00442100
lea rax, [0x010b07ef]
mov ebx, 0x1e
call fcn.004422e0
mov rax, qword [rsp + 0x98]
mov rbx, qword [rsp + 0x38]
call fcn.004422e0
lea rax, [0x01091db0]
mov ebx, 0xb
call fcn.004422e0
mov rax, qword [rsp + 0x48]
call fcn.00442160
lea rax, [0x01087885]
mov ebx, 2
nop
call fcn.004422e0
call fcn.00441ac0
lea rax, [0x01097c88]
mov ebx, 0x10
call fcn.0043ffc0
mov ebx, dword [rsi + 4]
mov rax, r9
call fcn.0045de00
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0x40], rbx
mov rcx, qword [rsp + 0xd8]
mov rcx, qword [rcx + 0x38]
mov qword [rsp + 0x58], rcx
call fcn.00441a60
lea rax, [0x010966d6]
mov ebx, 0xf
call fcn.004422e0
mov rax, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0x40]
call fcn.004422e0
lea rax, [0x01097c68]
mov ebx, 0x10
call fcn.004422e0
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
sub rax, rcx
call fcn.00442160
lea rax, [0x017988f0]
mov ebx, 1
nop dword [rax + rax]
call fcn.004422e0
mov rax, qword [rsp + 0x50]
call fcn.00442160
call fcn.00441ca0
call fcn.00441ac0
lea rax, [0x01097c78]
mov ebx, 0x10
call fcn.0043ffc0
nop
mov qword [rsp + 8], rax
mov byte [rsp + 0x10], bl
call fcn.00477be0
mov rax, qword [rsp + 8]
movzx ebx, byte [rsp + 0x10]
jmp fcn.0045ac40