Function at 0x1337c0f2b010
Capabilities:
Encode data using xor

Disassembly:
mov byte [rsp + 0x10], dl
push rbx
push rbp
push rsi
push rdi
push r12
sub rsp, 0x80
mov r9, qword [rcx + 0x20]
xor ebp, ebp
mov rsi, qword [rcx]
mov dil, 1
mov byte [rsp + 0xc0], 0
movzx r12d, dl
mov byte [rsp + 0xb0], dil
mov rbx, rcx
test r9, r9
je 0x1337c0f2b68b
mov rax, qword [rcx + 0x198]
cmp byte [rax + 0x20], bpl
je 0x1337c0f2b650
movzx r10d, word [rcx + 0x17a]
lea rbp, [rcx + 0x172]
movzx eax, word [rcx + 0x182]
movzx edx, byte [rbp]
mov qword [rsp + 0x78], r13
add dx, r10w
mov qword [rsp + 0x70], r14
mov r13d, eax
add r13, qword [r9 + 8]
mov qword [rsp + 0x68], r15
movzx r15d, r10w
sub r15w, ax
sub r15w, word [rcx + 0x184]
test r12b, r12b
jne 0x1337c0f2b0c2
lea r14, [rcx + 0x178]
cmp byte [r14], 0xff
je 0x1337c0f2b0c2
movzx ecx, word [r9]
movzx eax, dx
sub ecx, eax
cmp ecx, 0x40
jge 0x1337c0f2b111
mov byte [rsp + 0xc0], dil
test r12b, r12b
jne 0x1337c0f2b0eb
mov rax, qword [0x1337c12a9230]
mov ecx, dword [rax]
shr ecx, 2
test dil, cl
je 0x1337c0f2b0eb
movzx eax, word [r9]
mov word [rbx + 0x180], ax
movzx edi, word [rbx + 0x180]
lea r14, [rbx + 0x178]
lea rbp, [rbx + 0x172]
cmp dx, di
jae 0x1337c0f2b111
sub di, dx
lea r12, [rbx + 0x179]
jmp 0x1337c0f2b136
lea r12, [rbx + 0x179]
movzx ecx, r15w
movzx edx, byte [r12]
add rcx, rdx
cmp rcx, 4
jae 0x1337c0f2b158
mov edi, 4
sub di, dx
sub di, r15w
test di, di
je 0x1337c0f2b158
mov rcx, r10
movzx r8d, di
add rcx, qword [r9 + 8]
xor edx, edx
call fcn.1337c105bf90
add r15w, di
add word [rbx + 0x17a], di
cmp byte [r14], 0xff
je 0x1337c0f2b186
movzx eax, byte [r12]
movzx ecx, byte [rbx + 0x172]
add cx, ax
movzx eax, word [rbx + 0x186]
add cx, r15w
or cx, 0x4000
ror cx, 8
mov word [rax + r13], cx
movzx eax, byte [rbp]
xor ebp, ebp
test al, al
je 0x1337c0f2b3ed
mov rdx, qword [rbx + 0x198]
movzx ecx, ax
add word [rbx + 0x17a], cx
mov r9, r13
movzx r8d, word [rbx + 0x184]
lea eax, [r15 + rcx]
mov rcx, qword [rbx + 0x28]
movzx r15d, ax
lea rdi, [r8 + r13]
mov qword [rsp + 0x28], rdi
movzx eax, byte [rcx + 0x18]
mov byte [rsp + 0x30], al
movzx eax, byte [rcx + 0x19]
mov byte [rsp + 0x31], al
movzx eax, byte [rcx + 0x1a]
mov byte [rsp + 0x32], al
movzx eax, byte [rcx + 0x1b]
mov byte [rsp + 0x33], al
movzx eax, byte [rcx + 0x1c]
xor al, byte [rdx + 0x17]
mov byte [rsp + 0x34], al
movzx eax, byte [rcx + 0x1d]
xor al, byte [rdx + 0x16]
mov byte [rsp + 0x35], al
movzx eax, byte [rcx + 0x1e]
xor al, byte [rdx + 0x15]
mov byte [rsp + 0x36], al
movzx eax, byte [rcx + 0x1f]
xor al, byte [rdx + 0x14]
mov byte [rsp + 0x37], al
movzx eax, byte [rcx + 0x20]
xor al, byte [rdx + 0x13]
mov byte [rsp + 0x38], al
movzx eax, byte [rcx + 0x21]
xor al, byte [rdx + 0x12]
mov byte [rsp + 0x39], al
movzx eax, byte [rcx + 0x22]
xor al, byte [rdx + 0x11]
mov byte [rsp + 0x3a], al
movzx eax, byte [rcx + 0x23]
xor al, byte [rdx + 0x10]
lea rdx, [rsp + 0x30]
mov byte [rsp + 0x3b], al
mov rcx, qword [rcx + 8]
mov word [rsp + 0x20], r15w
call fcn.1337c0f2c900
test eax, eax
jns 0x1337c0f2b276
mov edx, setsockopt
movsxd r8, eax
lea r9, str.Encryption_failure
mov word [rsp + 0x20], dx
mov rcx, rsi
call fcn.1337c0f0e4a0
jmp 0x1337c0f2b60b
test byte [rsi + 0xe9], 8
je 0x1337c0f2b35c
movzx eax, byte [r12]
sub rdi, rax
cmp byte [r14], 0xff
lea r8, [rdi + 4]
jne 0x1337c0f2b2ed
movzx eax, byte [rbx + 0x170]
movups xmm0, xmmword [r8]
shr eax, 2
and eax, 0xf
shl eax, 4
movups xmmword [rax + rbx + 0x30], xmm0
movzx eax, byte [rbx + 0x170]
shr rax, 2
and eax, 0xf
mov qword [rbx + rax*8 + 0x130], r13
movzx eax, byte [rbx + 0x170]
lea ecx, [rax + 4]
xor cl, al
and cl, 0x3c
xor cl, al
mov byte [rbx + 0x170], cl
and cl, 0x3c
cmp cl, 0x20
jne 0x1337c0f2b35c
mov rcx, rbx
call fcn.1337c0f2af10
jmp 0x1337c0f2b35c
mov rcx, qword [rbx + 0x28]
lea r9, [rbx + 0xb0]
mov dl, 1
mov rcx, qword [rcx + 0x10]
call fcn.1337c0f2cae0
test eax, eax
jns 0x1337c0f2b32a
movsxd r8, eax
lea r9, str.HP_failure
mov edx, setsockopt
mov word [rsp + 0x20], 0xa
mov rcx, rsi
call fcn.1337c0f0e4a0
jmp 0x1337c0f2b60b
movzx eax, byte [rbx + 0xb0]
xor dl, dl
and al, 0xf
xor byte [r13], al
cmp byte [rbx + 0x179], dl
jbe 0x1337c0f2b35c
movzx eax, dl
inc dl
lea rcx, [rax + rdi]
movzx eax, byte [rax + rbx + 0xb1]
xor byte [rcx], al
cmp dl, byte [rbx + 0x179]
jb 0x1337c0f2b341
movsxd rax, dword [rbx + 0x174]
mov rcx, r15
mov rdx, qword [rsi + rax*8 + 0x848]
movzx eax, byte [rbx + 0x172]
sub rcx, rax
add rcx, qword [rdx + 0x190]
mov qword [rdx + 0x190], rcx
cmp byte [rbx + 0x178], 0xff
jne 0x1337c0f2b3ed
lea rax, [rcx + 0x5dc]
cmp rax, qword [rsi + 0x60]
jb 0x1337c0f2b3ed
test byte [rdx + 0x198], 2
jne 0x1337c0f2b3ed
test byte [rsi + 0xea], 2
je 0x1337c0f2b3ed
mov rcx, rsi
call fcn.1337c0f1f480
mov rcx, rsi
test eax, eax
jns 0x1337c0f2b3dd
movsxd r8, eax
lea r9, str.Send_triggered_key_update
mov edx, setsockopt
mov word [rsp + 0x20], 0x19
call fcn.1337c0f0e4a0
jmp 0x1337c0f2b60b
call fcn.1337c0f1f5a0
mov rax, qword [rsi + 0x900]
mov qword [rbx + 0x28], rax
lea rcx, [rsp + 0xc8]
call qword [0x1337c1061458]
mov rcx, qword [rsp + 0xc8]
lea r13, [rsi + 0x7f8]
mov rax, rcx
xor edx, edx
shr rax, 0x20
imul rax, rax, 0xf4240
div qword [0x1337c12e18c0]
mov eax, ecx
imul rax, rax, 0xf4240
shl rdx, 0x20
add rax, rdx
xor edx, edx
div qword [0x1337c12e18c0]
mov rcx, rax
mov rax, qword [rbx + 0x198]
mov dword [rax + 0x18], ecx
mov rax, qword [rbx + 0x198]
add r15w, word [rbx + 0x184]
mov word [rax + 0x1c], r15w
lea r15, [r13 - 0x7f8]
mov r14, qword [rbx + 0x198]
mov rax, qword [r15 + 0x40]
mov r12, qword [rbx + 8]
movzx ecx, byte [r14 + 0x20]
shl rcx, 5
add rcx, 0x110
add rax, rcx
mov rcx, rax
mov qword [rsp + 0xc8], rax
call qword [0x1337c1061468]
mov rdi, rax
test rax, rax
jne 0x1337c0f2b4bb
mov rax, qword [rsp + 0xc8]
xor edx, edx
mov rcx, qword [0x1337c12aa6f0]
mov r8d, dword [rax + 0x10]
call qword [0x1337c10614f8]
mov rdi, rax
mov rdx, r14
test rdi, rdi
jne 0x1337c0f2b528
xor r8d, r8d
mov rcx, r13
call fcn.1337c0f260b0
cmp byte [r14 + 0x20], dil
jbe 0x1337c0f2b5ce
nop dword [rax + rax]
movzx eax, dil
lea rcx, [rax + rax*2]
lea rdx, [r14 + rcx*8]
movzx ecx, byte [r14 + rcx*8 + 0x3a]
sub ecx, 4
je 0x1337c0f2b50b
sub ecx, 1
je 0x1337c0f2b50b
sub ecx, 3
je 0x1337c0f2b50b
sub ecx, 9
je 0x1337c0f2b50b
cmp ecx, 4
jne 0x1337c0f2b51a
mov rcx, qword [rdx + 0x28]
add dword [rcx + 0x18], 0xffffffff
jne 0x1337c0f2b51a
call fcn.1337c0f0c500
inc dil
cmp dil, byte [r14 + 0x20]
jb 0x1337c0f2b4e0
jmp 0x1337c0f2b5ce
movzx eax, byte [r14 + 0x20]
mov rcx, rdi
lea r8, [rax + rax*2]
lea r8, [r8*8 + 0x28]
call fcn.1337c105b8f0
mov rax, qword [r14 + 0x10]
mov qword [r13 + 0x18], rax
mov qword [rdi], rbp
mov rax, qword [r13 + 0x28]
mov qword [rax], rdi
mov qword [r13 + 0x28], rdi
inc qword [r15 + 0xbe0]
movzx eax, word [r14 + 0x1c]
add qword [r15 + 0xc00], rax
test byte [rdi + 0x1f], 4
je 0x1337c0f2b5ce
cmp dword [r13], ebp
jne 0x1337c0f2b57e
mov rcx, r15
call fcn.1337c0f140a0
inc qword [r15 + 0xbe8]
inc dword [r13]
mov eax, dword [rdi + 0x18]
mov dword [r13 + 0x30], eax
test byte [r12 + 1], 0x10
jne 0x1337c0f2b5bc
movzx r9d, word [rdi + 0x1c]
mov r8d, ebp
mov eax, dword [r12 + 0x60]
mov rdx, r12
sub eax, r9d
mov rcx, r15
cmp dword [r12 + 0x60], r9d
cmova r8d, eax
call fcn.1337c0f220c0
movzx edx, word [rdi + 0x1c]
lea rcx, [r15 + 0x718]
call qword [r15 + 0x740]
mov rax, qword [rbx + 0x198]
mov byte [rax + 0x20], bpl
mov rax, qword [rbx + 0x198]
test byte [rax + 0x1f], 4
je 0x1337c0f2b60b
or byte [rbx + 0x170], 2
movzx ecx, word [rax + 0x1c]
mov eax, dword [rbx + 0x188]
cmp ecx, eax
jbe 0x1337c0f2b603
mov dword [rbx + 0x188], ebp
jmp 0x1337c0f2b60b
sub eax, ecx
mov dword [rbx + 0x188], eax
mov r15, qword [rsp + 0x68]
mov r14, qword [rsp + 0x70]
mov r13, qword [rsp + 0x78]
cmp byte [rsp + 0xc0], bpl
je 0x1337c0f2b632
movzx r12d, byte [rsp + 0xb8]
jmp 0x1337c0f2b71f
cmp byte [rsp + 0xb8], bpl
jne 0x1337c0f2b85c
mov al, 1
add rsp, 0x80
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
dec qword [rsi + 0xab8]
movzx edi, bpl
movzx eax, word [rcx + 0x184]
sub word [rcx + 0x17a], ax
mov word [rcx + 0x184], bp
mov byte [rsp + 0xb0], bpl
jne 0x1337c0f2b68b
mov rdx, qword [rcx + 0x20]
mov rcx, qword [rcx + 0x18]
call fcn.1337c0f2f110
mov qword [rbx + 0x20], rbp
mov rax, qword [rbx + 8]
cmp dword [rax + 0x60], 0xffffffff
je 0x1337c0f2b709
test byte [rsi + 0x101], 4
jne 0x1337c0f2b709
lea rcx, [rsp + 0xc0]
call qword [0x1337c1061458]
mov r8, qword [0x1337c12e18c0]
xor edx, edx
mov rcx, qword [rsp + 0xc0]
mov rax, rcx
mov ecx, ecx
shr rax, 0x20
imul r9, rax, 0xf4240
mov rax, r9
div r8
mov rax, rdx
shl rax, 0x20
imul rdx, rcx, 0xf4240
add rax, rdx
xor edx, edx
div r8
xor edx, edx
mov rcx, rax
mov rax, r9
div r8
shl rax, 0x20
add rcx, rax
or byte [rsi + 0x101], 4
mov qword [rsi + 0xcb8], rcx
test r12b, r12b
je 0x1337c0f2b8a1
cmp byte [rbx + 0x171], bpl
je 0x1337c0f2b85c
mov rcx, qword [rbx + 0x20]
test rcx, rcx
je 0x1337c0f2b74f
movzx eax, word [rbx + 0x17a]
mov dword [rcx], eax
movzx eax, word [rbx + 0x17a]
inc byte [rbx + 0x171]
add dword [rbx + 0x17c], eax
mov qword [rbx + 0x20], rbp
mov word [rbx + 0x17a], bp
test r12b, r12b
jne 0x1337c0f2b797
mov rdx, qword [rbx + 0x18]
mov rax, qword [rdx + 0x20]
movzx r9d, byte [rdx + 0x34]
mov rcx, qword [rax]
cmp r9b, byte [rcx + 5]
jb 0x1337c0f2b7fd
movzx r8d, word [rdx + 0x2c]
test r8w, r8w
je 0x1337c0f2b797
cmp qword [rdx + 0x50], 0
je 0x1337c0f2b797
mov eax, r9d
mov ecx, 0xffff
add rax, rax
sub ecx, dword [rdx + rax*8 + 0x28]
sub ecx, dword [rdx + 0x48]
cmp r8d, ecx
jbe 0x1337c0f2b7fd
test byte [rbx + 0x170], 0x3c
je 0x1337c0f2b7a8
mov rcx, rbx
call fcn.1337c0f2af10
mov rcx, qword [rbx + 8]
movzx r8d, byte [rbx + 0x171]
mov rax, qword [rbx]
mov r9d, dword [rbx + 0x17c]
lea rdx, [rcx + 0x20]
mov rcx, qword [rcx + 0x18]
mov rax, qword [rax + 0x40]
movzx eax, word [rax + 0x3a]
mov word [rsp + 0x28], ax
mov dword [rsp + 0x20], r8d
mov r8, qword [rbx + 0x18]
call fcn.1337c0f08ea0
mov rax, qword [rbx + 0x198]
or byte [rbx + 0x170], 1
mov qword [rbx + 0x18], rbp
mov dword [rbx + 0x17c], ebp
mov byte [rax + 0x20], 0
cmp dword [rsi + 0xb9c], 0xcf43336b
movzx eax, byte [rbx + 0x178]
je 0x1337c0f2b82a
cmp al, 3
je 0x1337c0f2b82e
movzx eax, byte [rsp + 0xb0]
add rsp, 0x80
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
test al, al
jne 0x1337c0f2b846
xor r9d, r9d
mov word [rsp + 0x20], bp
xor r8d, r8d
mov edx, 1
mov rcx, rsi
call fcn.1337c0f0e4a0
movzx eax, byte [rsp + 0xb0]
add rsp, 0x80
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rdx, qword [rbx + 0x20]
test rdx, rdx
je 0x1337c0f2b879
mov rcx, qword [rbx + 0x18]
call fcn.1337c0f2f110
mov qword [rbx + 0x20], rbp
mov word [rbx + 0x17a], bp
mov rcx, qword [rbx + 0x18]
test rcx, rcx
je 0x1337c0f2b846
call fcn.1337c0f2ee70
movzx eax, byte [rsp + 0xb0]
mov qword [rbx + 0x18], rbp
add rsp, 0x80
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
movzx eax, dil
add rsp, 0x80
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret