Function at 0x14023e650
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rdx
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x40
mov qword [rax - 0x40], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rbp
mov r15, r9
mov rdi, r8
mov rax, rdx
mov ebx, ecx
mov rcx, qword [r9]
test rcx, rcx
je 0x14023e6ac
mov eax, 0xffffffff
lock xadd dword [rcx + 8], eax
cmp eax, 1
jne 0x14023e6a7
mov rcx, qword [r9]
test rcx, rcx
je 0x14023e6a7
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov rax, qword [rsp + 0x78]
xor esi, esi
mov qword [r15], rsi
lea r13d, [rsi + 2]
cmp byte [rsp + 0x90], sil
je 0x14023e6f8
cmp ebx, r13d
jne 0x14023e6c8
mov bl, 0x82
jmp 0x14023e71f
cmp ebx, 1
jne 0x14023e6d1
mov bl, 0x81
jmp 0x14023e71f
cmp ebx, 8
jne 0x14023e6da
mov bl, reloc.ODBC32.dll_SQLGetDiagRecW
jmp 0x14023e71f
cmp ebx, 9
jne 0x14023e6e3
mov bl, 0x89
jmp 0x14023e71f
cmp ebx, 0xa
jne 0x14023e6ec
mov bl, SQLSetConnectAttrW
jmp 0x14023e71f
test ebx, ebx
jne 0x14023e8b9
mov bl, 0x80
jmp 0x14023e71f
cmp ebx, r13d
jne 0x14023e703
movzx ebx, r13b
jmp 0x14023e71f
cmp ebx, 1
je 0x14023e71f
cmp ebx, 8
je 0x14023e71f
cmp ebx, 9
je 0x14023e71f
cmp ebx, 0xa
je 0x14023e71f
test ebx, ebx
jne 0x14023e8b9
test rdi, rdi
js 0x14023e8b9
jle 0x14023e733
test rax, rax
je 0x14023e8b9
lea rcx, [rdi + 0x14]
lea rdx, [0x1404528a0]
call fcn.14028375c
mov r14, rax
test rax, rax
je 0x14023e8b9
cmp rdi, 0x7e
jge 0x14023e75b
movzx ebp, dil
jmp 0x14023e792
cmp rdi, 0xffff
jg 0x14023e77d
mov bpl, 0x7e
mov r13d, 4
movzx ecx, di
call qword [sym.imp.WS2_32.dll_htons]
mov word [r14 + 2], ax
jmp 0x14023e792
mov bpl, 0x7f
mov r13d, 0xa
mov rcx, rdi
call fcn.1401badd0
mov qword [r14 + 2], rax
mov dword [rsp + 0x88], esi
cmp byte [rsp + 0x98], sil
je 0x14023e7c3
or bpl, 0x80
call fcn.140067020
mov rcx, rax
call fcn.140065980
mov dword [rsp + 0x88], eax
mov dword [r14 + r13], eax
add r13, 4
lea rax, [rdi + r13]
mov qword [rsp + 0x20], rax
mov byte [r14], bl
mov byte [r14 + 1], bpl
test rdi, rdi
jle 0x14023e819
lea rbx, [r14 + r13]
mov r8, rdi
mov rdx, qword [rsp + 0x78]
mov rcx, rbx
call fcn.140284ff0
cmp byte [rsp + 0x98], sil
je 0x14023e819
mov rcx, rsi
test rdi, rdi
jle 0x14023e819
nop
mov rax, rcx
and eax, 3
movzx eax, byte [rsp + rax + 0x88]
xor byte [rbx + rcx], al
inc rcx
cmp rcx, rdi
jl 0x14023e800
mov ecx, 0x28
call fcn.14028314c
mov qword [rsp + 0x30], rax
test rax, rax
je 0x14023e838
mov rcx, rax
call fcn.14006be10
mov rsi, rax
test rsi, rsi
je 0x14023e847
mov eax, 1
lock xadd dword [rsi + 8], eax
mov rcx, qword [r15]
mov edx, 0xffffffff
test rcx, rcx
je 0x14023e877
mov eax, edx
lock xadd dword [rcx + 8], eax
sub eax, 1
jne 0x14023e877
mov rcx, qword [r15]
test rcx, rcx
je 0x14023e877
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov edx, 0xffffffff
mov qword [r15], rsi
test rsi, rsi
je 0x14023e8a2
mov eax, 1
lock xadd dword [rsi + 8], eax
lock xadd dword [rsi + 8], edx
lea eax, [rdx - 1]
test eax, eax
jne 0x14023e8a2
mov rax, qword [rsi]
mov edx, 1
mov rcx, rsi
call qword [rax]
mov r9b, 1
mov r8, qword [rsp + 0x20]
mov rdx, r14
mov rcx, qword [r15]
call fcn.14006bf50
mov al, 1
jmp 0x14023e8bb
xor al, al
mov rbx, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x80]
add rsp, 0x40
pop r15
pop r14
pop r13
pop rdi
pop rsi
ret