Function at 0x14014c000
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x338
mov rbx, r8
mov rsi, rdx
mov rdi, rcx
mov r12, qword [rsp + 0x3a0]
movzx eax, byte [rsp + 0x3a8]
movabs r14, 0x8000000000000000
movdqu xmm0, xmmword [r12 + 0x18]
movdqu xmm1, xmmword [r12 + 0x28]
movdqu xmmword [rdx + 0x120], xmm1
movdqu xmmword [rdx + 0x110], xmm0
movabs rcx, 0x14452474e574f44
cmp qword [rdx + 0x128], rcx
sete bpl
and bpl, al
je 0x14014c0cb
mov word [rsp + 0x1a8], 4
lea rax, [r14 + 1]
mov qword [rsp + 0xf0], rax
mov dword [rsp + 0xf8], 0xd0001
cmp byte [rbx + 0x41], 2
sete r8b
lea rdx, [rsp + 0xf0]
mov rcx, rbx
call fcn.14012c440
mov byte [rbx + 0x301], 1
mov word [rdi], 9
xor ebx, ebx
mov rax, qword [rsi + 0xe8]
lock dec qword [rax]
je 0x14014c22b
jmp 0x14014c237
mov rax, qword [r12 + 8]
mov rcx, qword [r12 + 0x10]
test rcx, rcx
je 0x14014c172
lea rdx, [rcx*8]
lea rdx, [rdx + rdx*4]
xor r8d, r8d
mov r11d, 0x3f7f
jmp 0x14014c109
add r8, 0x28
cmp rdx, r8
je 0x14014c172
movzx r10d, word [rax + r8]
bt r11d, r10d
jb 0x14014c100
cmp r10d, 0xe
jne 0x14014c123
cmp word [rax + r8 + 0x20], 0x13
jne 0x14014c100
lea rdx, [rsi + 0x130]
mov qword [rsp + 0x58], rdx
mov byte [rsi + 0x130], 1
lea rdx, [rsi + 0xe8]
mov qword [rsp + 0x50], rdx
mov dl, 1
test rcx, rcx
mov qword [rsp + 0x40], r9
jne 0x14014c2c0
mov dword [rsp + 0x3c], 0
xor r13d, r13d
lea r15, [rsi + 0xf0]
cmp qword [rsi], r14
jne 0x14014c35d
jmp 0x14014c4e3
mov byte [rsi + 0x130], 0
mov rdx, qword [rsi + 0xe8]
cmp byte [rdx + 0x163], 0
je 0x14014c298
lea rax, [r14 + 2]
mov qword [rsp + 0x78], rax
mov word [rsp + 0x1a8], 4
lea rax, [r14 + 1]
mov qword [rsp + 0xf0], rax
mov dword [rsp + 0xf8], 0x60001
cmp byte [rbx + 0x41], 2
sete r8b
lea rdx, [rsp + 0xf0]
mov rcx, rbx
call fcn.14012c440
mov byte [rbx + 0x301], 1
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0x2bf], rax
movups xmm0, xmmword [rsp + 0x78]
movups xmmword [rsp + 0x2af], xmm0
mov byte [rdi], 8
movdqu xmm0, xmmword [rsp + 0x2a8]
mov rax, qword [rsp + 0x2b7]
mov rcx, qword [rsp + 0x2bf]
movdqu xmmword [rdi + 1], xmm0
mov qword [rdi + 0x10], rax
mov qword [rdi + 0x18], rcx
xor ebx, ebx
mov rax, qword [rsi + 0xe8]
lock dec qword [rax]
jne 0x14014c237
lea rcx, [rsi + 0xe8]
call fcn.1401418c0
cmp qword [rsi], r14
sete al
or bl, al
jne 0x14014c249
mov rcx, rsi
call fcn.140138fb0
cmp byte [rsi + 0xc8], 0
jne 0x14014c276
mov rax, qword [rsi + 0xd0]
shl rax, 1
test rax, rax
je 0x14014c276
mov r8, qword [rsi + 0xd8]
mov rcx, qword [0x1402f3170]
xor edx, edx
call fcn.1401d7c44
add rsi, 0x90
mov rcx, rsi
add rsp, 0x338
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.14014de90
lea rdx, [rsi + 0x130]
mov qword [rsp + 0x58], rdx
lea rdx, [rsi + 0xe8]
mov qword [rsp + 0x50], rdx
xor edx, edx
test rcx, rcx
mov qword [rsp + 0x40], r9
je 0x14014c152
mov r15d, edx
shl rcx, 3
lea rcx, [rcx + rcx*4]
xor edx, edx
jmp 0x14014c2d9
add rdx, 0x28
cmp rcx, rdx
je 0x14014c301
movzx r8d, word [rax + rdx]
lea r10d, [r8 - 3]
cmp r10d, 0xb
jb 0x14014c2d0
cmp r8d, 2
jb 0x14014c2d0
mov r11b, 1
cmp r8d, 0xe
jne 0x14014c304
cmp word [rax + rdx + 0x20], 0x15
jne 0x14014c2d0
jmp 0x14014c304
xor r11d, r11d
xor edx, edx
mov r8d, 0x3eff
mov dword [rsp + 0x3c], r11d
jmp 0x14014c329
add rdx, 0x28
cmp rcx, rdx
je 0x14014c347
movzx r10d, word [rax + rdx]
mov r13b, 1
bt r8d, r10d
jb 0x14014c320
cmp r10d, 0xe
jne 0x14014c34a
cmp word [rax + rdx + 0x20], 5
jne 0x14014c320
jmp 0x14014c34a
xor r13d, r13d
mov edx, r15d
lea r15, [rsi + 0xf0]
cmp qword [rsi], r14
je 0x14014c4e3
mov dword [rsp + 0x4c], edx
lea rcx, [rsp + 0x2a8]
mov r8d, 0x90
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x328]
cmp rax, qword [r12 + 0x58]
jne 0x14014c4c4
lea r14, [r12 + 0x38]
test rax, rax
je 0x14014c63f
lea rcx, [rax - 0x21]
cmp rcx, 0xffffffffffffffe0
jb 0x14014caca
cmp rax, 8
jae 0x14014c3b5
xor edx, edx
xor ecx, ecx
jmp 0x14014c4a0
cmp rax, 0x10
jae 0x14014c423
xor edx, edx
xor ecx, ecx
mov r8, rcx
mov ecx, eax
and ecx, 0x38
movzx edx, dl
movd xmm0, edx
nop
mov rdx, qword [r14 + r8]
xor rdx, qword [rsp + r8 + 0x308]
movq xmm1, rdx
por xmm0, xmm1
add r8, 8
cmp rcx, r8
jne 0x14014c3d0
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd edx, xmm1
cmp rax, rcx
jne 0x14014c4a0
jmp 0x14014c4bc
mov ecx, eax
and ecx, 0x30
movdqu xmm1, xmmword [rsp + 0x308]
movdqu xmm0, xmmword [r12 + 0x38]
pxor xmm0, xmm1
pxor xmm1, xmm1
cmp rcx, 0x10
je 0x14014c45a
movdqu xmm2, xmmword [rsp + 0x318]
movdqu xmm1, xmmword [r12 + 0x48]
pxor xmm1, xmm2
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movdqa xmm1, xmm0
psrld xmm1, 0x10
por xmm1, xmm0
movdqa xmm0, xmm1
psrlw xmm0, 8
por xmm0, xmm1
movd edx, xmm0
cmp rax, rcx
je 0x14014c4bc
test al, 8
jne 0x14014c3bf
nop dword [rax + rax]
movzx r8d, byte [r14 + rcx]
xor r8b, byte [rsp + rcx + 0x308]
lea r9, [rcx + 1]
or dl, r8b
mov rcx, r9
cmp rax, r9
jne 0x14014c4a0
test dl, dl
je 0x14014c63f
lea rcx, [rsp + 0x2a8]
movabs r14, 0x8000000000000000
call fcn.140138fb0
mov rax, qword [rsp + 0x58]
movzx edx, byte [rax]
mov byte [rbx + 0x306], 0
mov rax, qword [rsi + 0xe8]
mov rcx, qword [r12 + 0x58]
mov qword [rsp + 0x208], rcx
movups xmm0, xmmword [r12 + 0x38]
movups xmm1, xmmword [r12 + 0x48]
movups xmmword [rsp + 0x1f8], xmm1
movups xmmword [rsp + 0x1e8], xmm0
movups xmm0, xmmword [rsi + 0xc8]
movups xmm1, xmmword [rsi + 0xd8]
movups xmmword [rsp + 0x1c8], xmm1
movups xmmword [rsp + 0x1b8], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmm2, xmmword [r15 + 0x20]
movups xmm3, xmmword [r15 + 0x30]
movups xmmword [rsp + 0x240], xmm3
movups xmmword [rsp + 0x230], xmm2
movups xmmword [rsp + 0x220], xmm1
movups xmmword [rsp + 0x210], xmm0
movdqu xmm0, xmmword [rsi + 0x90]
movdqu xmm1, xmmword [rsi + 0xa0]
movdqu xmm2, xmmword [rsi + 0xb0]
movdqu xmmword [rsp + 0x180], xmm0
movdqu xmmword [rsp + 0x1a0], xmm2
movdqu xmmword [rsp + 0x190], xmm1
mov rcx, qword [rsi + 0xc0]
mov qword [rsp + 0x1b0], rcx
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0xf0], r14
mov byte [rsp + 0x250], dl
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x1e0], rax
mov byte [rsp + 0x251], r13b
mov eax, dword [rsp + 0x3c]
mov byte [rsp + 0x252], al
movzx eax, byte [0x1402f31d1]
mov edx, 0x168
xor ecx, ecx
call fcn.14018e330
test rax, rax
je 0x14014cae2
mov rsi, rax
lea rdx, [rsp + 0xf0]
mov r8d, 0x168
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov qword [rdi + 8], rsi
lea rax, fcn.14015d8e0
mov qword [rdi + 0x10], rax
mov byte [rdi], 0x15
add rsp, 0x338
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rsp + 0x300]
movzx edx, word [rcx + 0x48]
mov al, 0x2c
mov r8, qword [rsp + 0x40]
cmp dx, word [r8 + 0x48]
jne 0x14014c688
movzx edx, dx
cmp edx, 0x178
jne 0x14014c673
movzx ecx, word [rcx + 0x4a]
mov rdx, qword [rsp + 0x40]
cmp cx, word [rdx + 0x4a]
jne 0x14014c688
cmp byte [rsp + 0x330], 0
setne al
mov ecx, dword [rsp + 0x4c]
xor cl, al
mov al, 0x2d
je 0x14014c6bd
mov byte [rdi], 9
mov byte [rdi + 1], al
lea rcx, [rsp + 0x2a8]
movabs r14, 0x8000000000000000
call fcn.140138fb0
mov bl, 1
mov rax, qword [rsi + 0xe8]
lock dec qword [rax]
je 0x14014c22b
jmp 0x14014c237
mov r9, qword [rsp + 0x2c8]
mov rax, qword [rsp + 0x2d0]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x78]
mov rdx, r15
mov r8, qword [rsp + 0x40]
call fcn.14015d9a0
mov rax, qword [rsp + 0x50]
mov rax, qword [rax]
mov rcx, qword [rax + 0x110]
mov rax, qword [rax + 0x118]
mov rdx, qword [rax + 0x10]
mov rax, qword [rax + 0x30]
dec rdx
and rdx, 0xfffffffffffffff0
add rcx, rdx
add rcx, 0x10
lea r9, [rsp + 0x80]
lea rdx, [rsp + 0xc0]
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x30], 0x30
mov qword [rsp + 0x20], 0x20
lea rdx, str.CLIENT_RANDOM
mov r8d, 0xd
call rax
lea rdx, [rsp + 0x78]
mov rcx, rbx
call fcn.14015daa0
mov rdx, qword [rsp + 0x2e0]
mov r8, qword [rsp + 0x2e8]
lea rcx, [rsp + 0xf0]
call fcn.140139dd0
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x70], rax
movdqu xmm0, xmmword [rsp + 0xf0]
movdqa xmmword [rsp + 0x60], xmm0
lea rcx, [rsp + 0xf0]
lea rdx, [rsp + 0x60]
call fcn.14011f420
movups xmm0, xmmword [rsp + 0xf0]
movaps xmmword [rsp + 0x60], xmm0
mov rax, qword [rsp + 0x100]
mov qword [rsp + 0x70], rax
lea rcx, [rbx + 0x2c0]
call fcn.14011fff0
mov rax, qword [rsp + 0x70]
mov qword [rbx + 0x2d0], rax
movaps xmm0, xmmword [rsp + 0x60]
movups xmmword [rbx + 0x2c0], xmm0
mov byte [rbx + 0x306], 2
lea r15, [rsi + 0xc8]
lea rbx, [rsi + 0x90]
cmp byte [rsp + 0x3c], 0
je 0x14014c95a
mov r12, qword [rsi + 0xe8]
mov rax, qword [rsp + 0xe8]
mov qword [rsp + 0x250], rax
movups xmm0, xmmword [rsp + 0xd8]
movups xmmword [rsp + 0x240], xmm0
movups xmm0, xmmword [rsp + 0xc8]
movups xmmword [rsp + 0x230], xmm0
movups xmm0, xmmword [rsp + 0xb8]
movups xmmword [rsp + 0x220], xmm0
movups xmm0, xmmword [rsp + 0x78]
movups xmm1, xmmword [rsp + 0x88]
movups xmm2, xmmword [rsp + 0x98]
movups xmm3, xmmword [rsp + 0xa8]
movups xmmword [rsp + 0x210], xmm3
movups xmmword [rsp + 0x200], xmm2
movups xmmword [rsp + 0x1f0], xmm1
movups xmmword [rsp + 0x1e0], xmm0
lea rcx, [rsp + 0xf0]
mov r8d, 0x90
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov rax, qword [r14 + 0x20]
mov qword [rsp + 0x278], rax
movups xmm0, xmmword [r14]
movups xmm1, xmmword [r14 + 0x10]
movups xmmword [rsp + 0x268], xmm1
movups xmmword [rsp + 0x258], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [rsp + 0x1b8], xmm0
movups xmmword [rsp + 0x1c8], xmm1
movzx eax, byte [rsi + 0x130]
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbx + 0x10]
movdqu xmm2, xmmword [rbx + 0x20]
movdqu xmmword [rsp + 0x180], xmm0
movdqu xmmword [rsp + 0x190], xmm1
movdqu xmmword [rsp + 0x1a0], xmm2
mov rcx, qword [rbx + 0x30]
mov qword [rsp + 0x1b0], rcx
mov qword [rsp + 0x1d8], r12
mov byte [rsp + 0x280], al
mov byte [rsp + 0x281], 1
mov ecx, 0x198
call fcn.14007fbf0
mov rsi, rax
lea rdx, [rsp + 0xf0]
mov r8d, 0x198
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov qword [rdi + 8], rsi
lea rax, fcn.14015df60
jmp 0x14014c624
mov r12, qword [rsi + 0xe8]
mov rax, qword [rsp + 0xe8]
mov qword [rsp + 0x270], rax
movups xmm0, xmmword [rsp + 0xd8]
movups xmmword [rsp + 0x260], xmm0
movups xmm0, xmmword [rsp + 0xc8]
movups xmmword [rsp + 0x250], xmm0
movups xmm0, xmmword [rsp + 0xb8]
movups xmmword [rsp + 0x240], xmm0
movups xmm0, xmmword [rsp + 0x78]
movups xmm1, xmmword [rsp + 0x88]
movups xmm2, xmmword [rsp + 0x98]
movups xmm3, xmmword [rsp + 0xa8]
movups xmmword [rsp + 0x230], xmm3
movups xmmword [rsp + 0x220], xmm2
movups xmmword [rsp + 0x210], xmm1
movups xmmword [rsp + 0x200], xmm0
lea rcx, [rsp + 0xf0]
mov r8d, 0x90
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov rax, qword [r14 + 0x20]
mov qword [rsp + 0x298], rax
movups xmm0, xmmword [r14]
movups xmm1, xmmword [r14 + 0x10]
movups xmmword [rsp + 0x288], xmm1
movups xmmword [rsp + 0x278], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [rsp + 0x1d8], xmm0
movups xmmword [rsp + 0x1e8], xmm1
movzx eax, byte [rsi + 0x130]
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbx + 0x10]
movdqu xmm2, xmmword [rbx + 0x20]
movdqu xmmword [rsp + 0x180], xmm0
movdqu xmmword [rsp + 0x190], xmm1
movdqu xmmword [rsp + 0x1a0], xmm2
mov rcx, qword [rbx + 0x30]
mov qword [rsp + 0x1b0], rcx
mov qword [rsp + 0x1f8], r12
mov byte [rsp + 0x2a0], al
movabs rax, 0x8000000000000000
mov qword [rsp + 0x1b8], rax
mov byte [rsp + 0x2a1], 1
mov ecx, 0x1b8
call fcn.14007fbf0
mov rsi, rax
lea rdx, [rsp + 0xf0]
mov r8d, 0x1b8
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov qword [rdi + 8], rsi
lea rax, fcn.14015de30
jmp 0x14014c624
lea r8, [0x1402659e8]
mov ecx, 0x20
mov edx, 0x20
call fcn.14002d5f0
jmp 0x14014caf1
mov ecx, 8
mov edx, 0x168
call fcn.140023f30
ud2