Function at 0x14000e950
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
cmp byte [rcx + 0x5d], 0
mov rbx, rcx
mov r14, rdx
jne 0x14000eb20
mov r13, qword [rcx + 8]
mov r8, qword [rcx + 0x10]
sub r8, r13
cmp r8, 1
jbe 0x14000eb20
nop dword [rax + rax]
movzx eax, byte [r13 + 1]
movzx ebp, byte [r13]
mov r12d, eax
mov edi, eax
mov edx, ebp
shr edi, 5
and r12d, 0x7f
and edx, 0xf
and edi, 4
cmp r12b, 0x7e
je 0x14000ed70
xor ecx, ecx
cmp r12b, 0x7f
sete cl
lea edi, [rdi + rcx*8 + 2]
movsxd rdi, edi
cmp r8, rdi
jb 0x14000eb20
cmp r12b, 0x7d
ja 0x14000edb0
movzx r12d, r12b
mov r10d, 5
mov ecx, 3
mov r9d, 4
mov r11d, 2
lea rsi, [r12 + rdi]
test al, al
js 0x14000eb38
cmp r8, rsi
jb 0x14000eb20
cmp dl, 2
jbe 0x14000ebc5
cmp dl, 9
je 0x14000ee38
cmp dl, 0xa
je 0x14000f180
cmp dl, 8
je 0x14000f240
mov ecx, 2
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
lea rdx, str.ERROR:_Got_unexpected_WebSocket_message._n
mov rcx, rax
call sym.fprintf__iobuf__char_const__::_
cmp dword [rbx + 0x58], 1
jbe 0x14000ebe0
mov dword [rbx + 0x58], 0
xor eax, eax
mov ecx, 6
mov dword [rsp + 0x50], 0x8088
mov word [rsp + 0x54], ax
call sym.operator_new_unsigned_long_long_
mov rdx, qword [rbx + 0x28]
lea rcx, [rbx + 0x20]
mov rdi, rax
lea r9, [rax + 6]
mov qword [rsp + 0x90], rax
mov eax, dword [rsp + 0x50]
mov r8, rdi
mov qword [rsp + 0xa0], r9
mov dword [rdi], eax
movzx eax, word [rsp + 0x54]
mov qword [rsp + 0x98], r9
mov word [rdi + 4], ax
call method.void_std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_unsigned_char__std::vector_unsigned_char__std.allocator_unsigned_char__________gnu_cxx::__normal_iterator_unsigned_char__std::vector_uns
mov rcx, rdi
mov edx, 6
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rbx + 8]
nop word [rax + rax]
mov rax, qword [rbx + 0x10]
add rsi, rcx
mov r13, rcx
mov r8, rax
sub r8, rsi
cmp rsi, rax
je 0x14000eb00
cmp r8, 1
jle 0x14000f3e0
mov rdx, rsi
call sym.memmove
mov rax, qword [rbx + 0x10]
mov rcx, r13
mov r13, qword [rbx + 8]
mov r8, rax
sub r8, rsi
add rcx, r8
cmp rcx, rax
je 0x14000ebf0
mov qword [rbx + 0x10], rcx
sub rcx, r13
mov r8, rcx
cmp rcx, 1
ja 0x14000e990
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r10d, byte [r13 + r10]
movzx eax, byte [r13 + r11]
movzx r11d, byte [r13 + r9]
shl r10d, 8
mov r9d, r10d
movzx r10d, byte [r13 + rcx]
or r9d, r11d
mov ecx, r9d
movzx r9d, al
shl ecx, 8
or ecx, r10d
shl ecx, 8
or ecx, r9d
mov dword [rsp + 0x88], ecx
cmp r8, rsi
jb 0x14000eb20
cmp dl, 2
ja 0x14000ede0
test r12, r12
je 0x14000ebc5
xor byte [r13 + rdi], al
mov eax, 1
cmp r12, 1
je 0x14000ebc1
nop word [rax + rax]
mov rcx, rax
lea rdx, [rdi + rax]
add rax, 1
add rdx, qword [rbx + 8]
and ecx, 3
movzx ecx, byte [rsp + rcx + 0x88]
xor byte [rdx], cl
cmp r12, rax
jne 0x14000eba0
mov r13, qword [rbx + 8]
lea r8, [r13 + rdi]
mov rdx, qword [rbx + 0x40]
lea rcx, [rbx + 0x38]
lea r9, [r8 + r12]
call method.void_std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_unsigned_char__std::vector_unsigned_char__std.allocator_unsigned_char__________gnu_cxx::__normal_iterator_unsigned_char__std::vector_uns
test bpl, bpl
js 0x14000ec08
mov rcx, qword [rbx + 8]
jmp 0x14000eac8
sub rax, r13
mov r8, rax
cmp rax, 1
ja 0x14000e990
jmp 0x14000eb20
mov r12, qword [rbx + 0x40]
sub r12, qword [rbx + 0x38]
je 0x14000f1e8
js 0x14000f4cb
mov rcx, r12
call sym.operator_new_unsigned_long_long_
mov rdx, qword [rbx + 0x38]
mov r8, qword [rbx + 0x40]
mov qword [rsp + 0x50], rax
mov rdi, rax
lea rax, [rax + r12]
sub r8, rdx
mov qword [rsp + 0x60], rax
cmp r8, 1
jle 0x14000f521
mov rcx, rdi
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x28], r8
call sym.memmove
mov r8, qword [rsp + 0x28]
mov r9, qword [rsp + 0x30]
lea rbp, [rsp + 0xa0]
lea r13, [rdi + r8]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x58], r13
lea r15, [rsp + 0x90]
mov rdx, rbp
mov qword [rsp + 0x90], rbp
mov qword [rsp + 0x48], r8
cmp r8, 0xf
ja 0x14000f3a0
cmp rdi, r13
je 0x14000ecf7
mov rcx, r13
sub rcx, rdi
lea r8, [rcx - 1]
cmp r8, 6
jbe 0x14000f3d0
lea rax, [rdi + 1]
mov r9, rdx
sub r9, rax
xor eax, eax
cmp r9, 0xe
ja 0x14000f2b0
nop dword [rax]
movzx r8d, byte [rdi + rax]
mov byte [rdx + rax], r8b
add rax, 1
cmp rax, rcx
jne 0x14000ecd8
mov r9, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x90]
mov qword [rsp + 0x98], r9
mov rcx, r14
mov byte [rdx + r9], 0
mov rax, qword [r14]
mov rdx, r15
call qword [rax]
mov rcx, qword [rsp + 0x90]
cmp rcx, rbp
je 0x14000ed2d
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
test rdi, rdi
je 0x14000ed3d
mov rdx, r12
mov rcx, rdi
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rbx + 0x38]
pxor xmm0, xmm0
mov rdx, qword [rbx + 0x48]
mov qword [rbx + 0x48], 0
movups xmmword [rbx + 0x38], xmm0
test rcx, rcx
je 0x14000ebe0
sub rdx, rcx
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rbx + 8]
jmp 0x14000eac8
add edi, 4
movsxd rdi, edi
cmp r8, rdi
jb 0x14000eb20
movzx r12d, word [r13 + 2]
mov r10d, 7
mov ecx, 5
mov r9d, 6
mov r11d, 4
rol r12w, 8
movzx r12d, r12w
jmp 0x14000e9f6
mov r12, qword [r13 + 2]
bswap r12
test r12, r12
js 0x14000f570
mov r10d, 0xd
mov r9d, 0xc
mov ecx, 0xb
mov r11d, 0xa
jmp 0x14000e9f6
cmp dl, 9
jne 0x14000ea1d
test r12, r12
je 0x14000f4b3
xor byte [r13 + rdi], al
mov eax, 1
cmp r12, 1
je 0x14000f4df
nop word cs:[rax + rax]
mov rcx, rax
lea rdx, [rdi + rax]
add rax, 1
add rdx, qword [rbx + 8]
and ecx, 3
movzx ecx, byte [rsp + rcx + 0x88]
xor byte [rdx], cl
cmp r12, rax
jne 0x14000ee10
mov r13, qword [rbx + 8]
nop dword [rax]
lea r10, [r13 + rdi]
lea rbp, [rsp + 0xa0]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], rbp
mov r9, r10
lea r11, [r10 + r12]
lea r15, [rsp + 0x90]
mov qword [rsp + 0x50], r12
cmp r12, 0xf
ja 0x14000f020
cmp r10, r11
je 0x14000f4da
lea rax, [r12 - 1]
mov rdx, rbp
cmp rax, 6
ja 0x14000f074
xor eax, eax
nop dword [rax]
movzx ecx, byte [r9 + rax]
mov byte [rdx + rax], cl
add rax, 1
cmp r12, rax
jne 0x14000ee98
mov r12, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x90]
add rdx, r12
mov qword [rsp + 0x98], r12
mov byte [rdx], 0
mov r13, qword [rsp + 0x90]
mov dword [rsp + 0x48], 0x78563412
mov rdi, qword [rsp + 0x98]
movzx r15d, word [rsp + 0x98]
rol r15w, 8
cmp dword [rbx + 0x58], 1
jbe 0x14000eff9
pxor xmm0, xmm0
mov byte [rsp + 0x47], 0
mov eax, 2
mov qword [rsp + 0x60], 0
movaps xmmword [rsp + 0x50], xmm0
cmp rdi, 0x7d
ja 0x14000f190
movzx edx, byte [rbx + 0x5c]
lea r8, [rsp + 0x47]
lea edx, [rax + rdx*4]
lea rax, [rsp + 0x50]
movsxd rdx, edx
mov rcx, rax
mov qword [rsp + 0x28], rax
call method.std::vector_unsigned_char__std::allocator_unsigned_char___._M_fill_assign_unsigned_long_long__unsigned_char_const_
mov r12, qword [rsp + 0x50]
mov byte [r12], 0x8a
movzx eax, byte [rbx + 0x5c]
cmp rdi, 0x7d
ja 0x14000f1a8
shl eax, 7
or eax, edi
mov byte [r12 + 1], al
cmp byte [rbx + 0x5c], 0
jne 0x14000f400
lea r15, [rbx + 0x20]
mov rdx, qword [rbx + 0x28]
mov r9, qword [rsp + 0x58]
mov r8, r12
mov rcx, r15
call method.void_std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_unsigned_char__std::vector_unsigned_char__std.allocator_unsigned_char__________gnu_cxx::__normal_iterator_unsigned_char__std::vector_uns
mov rdx, qword [rbx + 0x28]
lea r9, [r13 + rdi]
mov r8, r13
mov rcx, r15
call sym.std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_char__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_______
mov rdx, qword [rsp + 0x60]
mov rax, qword [rbx + 0x20]
sub rdx, r12
cmp byte [rbx + 0x5c], 0
je 0x14000efe9
mov r8, qword [rbx + 0x28]
sub r8, rax
sub r8, rdi
test rdi, rdi
je 0x14000efe9
xor byte [rax + r8], 0x12
mov eax, 1
cmp rdi, 1
je 0x14000efe9
nop dword [rax]
mov r9, rax
lea rcx, [r8 + rax]
add rax, 1
add rcx, qword [rbx + 0x20]
and r9d, 3
movzx r9d, byte [rsp + r9 + 0x48]
xor byte [rcx], r9b
cmp rdi, rax
jne 0x14000efc8
mov rcx, r12
call sym.operator_delete_void__unsigned_long_long_
mov r13, qword [rsp + 0x90]
cmp r13, rbp
je 0x14000ebe0
mov rax, qword [rsp + 0xa0]
mov rcx, r13
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rbx + 8]
jmp 0x14000eac8
lea rdx, [rsp + 0x50]
xor r8d, r8d
mov rcx, r15
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x30], r11
mov qword [rsp + 0x28], r10
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_create_unsigned_long_long__unsigned_long_long_
mov r11, qword [rsp + 0x30]
mov r10, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x90], rax
mov rdx, rax
lea rax, [r12 - 1]
cmp r10, r11
mov r9, qword [rsp + 0x28]
mov qword [rsp + 0xa0], rcx
je 0x14000f4a8
lea r8, [r13 + rdi + 1]
mov rcx, rdx
sub rcx, r8
cmp rcx, 0xe
jbe 0x14000ee92
cmp rax, 0xe
jbe 0x14000f4d0
mov rcx, r12
xor eax, eax
and rcx, 0xfffffffffffffff0
nop dword [rax]
movdqu xmm1, xmmword [r10 + rax]
movups xmmword [rdx + rax], xmm1
add rax, 0x10
cmp rax, rcx
jne 0x14000f0a0
lea r9, [r10 + rcx]
lea rax, [rdx + rcx]
cmp r12, rcx
je 0x14000eea9
sub r12, rcx
lea r8, [r12 - 1]
cmp r8, 6
jbe 0x14000f0f1
mov r8, qword [r10 + rcx]
mov qword [rdx + rcx], r8
mov rdx, r12
and rdx, 0xfffffffffffffff8
add r9, rdx
add rax, rdx
and r12d, 7
je 0x14000eea9
movzx edx, byte [r9]
mov byte [rax], dl
lea rdx, [r9 + 1]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 1]
mov byte [rax + 1], dl
lea rdx, [r9 + 2]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 2]
mov byte [rax + 2], dl
lea rdx, [r9 + 3]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 3]
mov byte [rax + 3], dl
lea rdx, [r9 + 4]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 4]
mov byte [rax + 4], dl
lea rdx, [r9 + 5]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 5]
mov byte [rax + 5], dl
lea rdx, [r9 + 6]
cmp r11, rdx
je 0x14000eea9
movzx edx, byte [r9 + 6]
mov byte [rax + 6], dl
jmp 0x14000eea9
mov rcx, r13
jmp 0x14000eac8
cmp rdi, 0x10000
sbb eax, eax
and eax, 0xfffffffa
add eax, 0xa
jmp 0x14000ef1a
cmp rdi, 0xffff
ja 0x14000f410
cmp al, 1
mov word [r12 + 2], r15w
sbb eax, eax
and eax, 0xffffff80
sub eax, 2
mov byte [r12 + 1], al
cmp byte [rbx + 0x5c], 0
je 0x14000ef67
mov dword [r12 + 4], 0x78563412
jmp 0x14000ef67
lea rbp, [rsp + 0xa0]
xor r9d, r9d
xor edi, edi
xor r13d, r13d
mov qword [rsp + 0x50], 0
mov rdx, rbp
lea r15, [rsp + 0x90]
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x90], rbp
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x48], 0
jmp 0x14000eca5
cmp dword [rbx + 0x58], 1
jbe 0x14000f180
mov dword [rbx + 0x58], 0
xor edx, edx
mov ecx, 6
mov word [rsp + 0x54], dx
mov dword [rsp + 0x50], 0x8088
call sym.operator_new_unsigned_long_long_
mov rdx, qword [rbx + 0x28]
lea rcx, [rbx + 0x20]
mov rdi, rax
lea r9, [rax + 6]
mov qword [rsp + 0x90], rax
mov eax, dword [rsp + 0x50]
mov r8, rdi
mov qword [rsp + 0xa0], r9
mov dword [rdi], eax
movzx eax, word [rsp + 0x54]
mov qword [rsp + 0x98], r9
mov word [rdi + 4], ax
call method.void_std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_unsigned_char__std::vector_unsigned_char__std.allocator_unsigned_char__________gnu_cxx::__normal_iterator_unsigned_char__std::vector_uns
jmp 0x14000eab1
cmp r8, 0xe
jbe 0x14000f513
mov r8, rcx
and r8, 0xfffffffffffffff0
nop dword [rax]
movdqu xmm2, xmmword [rdi + rax]
movups xmmword [rdx + rax], xmm2
add rax, 0x10
cmp rax, r8
jne 0x14000f2c8
lea rax, [rdi + r8]
lea r9, [rdx + r8]
cmp r8, rcx
je 0x14000ecea
sub rcx, r8
lea r10, [rcx - 1]
cmp r10, 6
jbe 0x14000f316
mov r10, qword [rdi + r8]
mov qword [rdx + r8], r10
mov rdx, rcx
and rdx, 0xfffffffffffffff8
add rax, rdx
add r9, rdx
and ecx, 7
je 0x14000ecea
movzx edx, byte [rax]
mov byte [r9], dl
lea rdx, [rax + 1]
cmp r13, rdx
je 0x14000ecea
movzx edx, byte [rax + 1]
mov byte [r9 + 1], dl
lea rdx, [rax + 2]
cmp r13, rdx
je 0x14000ecea
movzx edx, byte [rax + 2]
mov byte [r9 + 2], dl
lea rdx, [rax + 3]
cmp r13, rdx
je 0x14000ecea
movzx edx, byte [rax + 3]
mov byte [r9 + 3], dl
lea rdx, [rax + 4]
cmp r13, rdx
je 0x14000ecea
movzx edx, byte [rax + 4]
mov byte [r9 + 4], dl
lea rdx, [rax + 5]
cmp r13, rdx
je 0x14000ecea
movzx edx, byte [rax + 5]
mov byte [r9 + 5], dl
lea rdx, [rax + 6]
cmp r13, rdx
je 0x14000ecea
movzx eax, byte [rax + 6]
mov byte [r9 + 6], al
jmp 0x14000ecea
lea rdx, [rsp + 0x48]
xor r8d, r8d
mov rcx, r15
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_create_unsigned_long_long__unsigned_long_long_
mov r9, qword [rsp + 0x48]
mov qword [rsp + 0x90], rax
mov rdx, rax
mov qword [rsp + 0xa0], r9
jmp 0x14000eca5
xor eax, eax
jmp 0x14000ecd8
jne 0x14000eb00
movzx eax, byte [rsi]
mov byte [rcx], al
mov rax, qword [rbx + 0x10]
mov r13, qword [rbx + 8]
mov r8, rax
sub r8, rsi
jmp 0x14000eb00
mov dword [r12 + 2], 0x78563412
jmp 0x14000ef67
cmp al, 1
mov r11, rdi
mov rax, rdi
mov r10, rdi
sbb edx, edx
shr r11, 0x10
and eax, 0xff00
mov r9, rdi
movzx r11d, r11b
shr r10, 0x18
mov r8, rdi
mov rcx, rdi
or rax, r11
movzx r10d, r10b
shr r9, 0x20
and edx, 0xffffff80
shl rax, 8
movzx r9d, r9b
shr r8, 0x28
sub edx, 1
or rax, r10
movzx r8d, r8b
shr rcx, 0x30
movzx edx, dl
shl rax, 8
movzx ecx, cl
mov byte [r12 + 9], dil
or rax, r9
shl rax, 8
or rax, r8
shl rax, 8
or rax, rcx
shld rax, rdi, 8
shl rax, 8
or rax, rdx
mov qword [r12 + 1], rax
cmp byte [rbx + 0x5c], 0
je 0x14000ef67
mov dword [r12 + 0xa], 0x78563412
jmp 0x14000ef67
mov r12, rcx
add rdx, r12
jmp 0x14000eeb9
lea rbp, [rsp + 0xa0]
mov qword [rsp + 0x90], rbp
mov rdx, rbp
jmp 0x14000eeb9
call sym.std::__throw_bad_alloc__
mov rax, rdx
xor ecx, ecx
jmp 0x14000f0d2
mov rdx, rbp
jmp 0x14000f4ab
lea rbp, [rsp + 0xa0]
add rdi, qword [rbx + 8]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], rbp
mov r9, rdi
mov rdx, rbp
mov qword [rsp + 0x50], 1
jmp 0x14000ee92
mov rax, rdi
mov r9, rdx
xor r8d, r8d
jmp 0x14000f2f8
jne 0x14000f616
movzx eax, byte [rdx]
lea r13, [rdi + 1]
lea rbp, [rsp + 0xa0]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x58], r13
mov r9d, 1
mov rdx, rbp
lea r15, [rsp + 0x90]
mov byte [rdi], al
mov qword [rsp + 0x90], rbp
mov qword [rsp + 0x48], 1
jmp 0x14000eca5
mov ecx, 2
mov byte [rbx + 0x5d], 1
call qword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
lea rdx, str.ERROR:_Frame_has_invalid_frame_length._Closing._n
mov rcx, rax
call sym.fprintf__iobuf__char_const__::_
cmp dword [rbx + 0x58], 1
jbe 0x14000eb20
mov dword [rbx + 0x58], 0
xor ecx, ecx
mov word [rsp + 0x74], cx
mov ecx, 6
mov dword [rsp + 0x70], 0x8088
call sym.operator_new_unsigned_long_long_
mov rdx, qword [rbx + 0x28]
lea rcx, [rbx + 0x20]
mov rsi, rax
lea r9, [rax + 6]
mov qword [rsp + 0x90], rax
mov eax, dword [rsp + 0x70]
mov r8, rsi
mov qword [rsp + 0xa0], r9
mov dword [rsi], eax
movzx eax, word [rsp + 0x74]
mov qword [rsp + 0x98], r9
mov word [rsi + 4], ax
call method.void_std::vector_unsigned_char__std::allocator_unsigned_char___::_M_range_insert___gnu_cxx::__normal_iterator_unsigned_char__std::vector_unsigned_char__std.allocator_unsigned_char__________gnu_cxx::__normal_iterator_unsigned_char__std::vector_uns
mov edx, 6
mov rcx, rsi
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp sym.operator_delete_void__unsigned_long_long_
mov r9, r8
jmp 0x14000ec66