Function at 0x18230
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x820
mov rbp, rdx
mov rbx, rcx
lea r14, [rdx + 0x404]
xor edx, edx
mov r8d, 0x450
mov rcx, rbp
call fcn.00043ee0
lea rcx, [rbp + 1]
mov r8d, 0x400
mov rdx, rbx
call qword [sym.imp.ntoskrnl.exe_strncpy]
xor r13d, r13d
mov byte [rbp + 0x400], 0
movzx eax, byte [rbx]
mov edx, r13d
test al, al
je 0x182a4
mov rcx, rbx
cmp al, 0x2e
je 0x182a4
mov al, byte [rcx + 1]
add rcx, 1
add edx, 1
test al, al
jne 0x18292
test edx, edx
mov eax, r13d
movsxd r15, edx
jle 0x182c1
lea rcx, [rsp + 0x20]
mov r8, r15
mov rdx, rbx
call fcn.00043b90
mov eax, r15d
or rcx, 0xffffffffffffffff
cdqe
lea rdi, [rsp + 0x20]
mov byte [rsp + rax + 0x20], r13b
xor eax, eax
mov qword [rsp + 0x870], r12
repne scasb al, byte [rdi]
not rcx
sub rcx, 1
test cl, 1
mov rsi, rcx
jne 0x1886c
shr esi, 1
mov r12d, r13d
je 0x18385
lea rbp, [rsp + 0x420]
lea rbx, [rsp + 0x20]
movzx eax, byte [rbx]
cmp al, 0x30
jl 0x1831b
cmp al, 0x39
jg 0x1831b
movsx edi, al
sub edi, 0x30
jmp 0x18327
movsx ecx, al
call qword [sym.imp.ntoskrnl.exe_toupper]
lea edi, [rax - 0x37]
movzx eax, byte [rbx + 1]
cmp al, 0x30
jl 0x1833b
cmp al, 0x39
jg 0x1833b
movsx eax, al
sub eax, 0x30
jmp 0x18347
movsx ecx, al
call qword [sym.imp.ntoskrnl.exe_toupper]
sub eax, 0x37
cmp edi, 0xf
ja 0x1886c
cmp eax, 0xf
ja 0x1886c
shl dil, 4
add r12d, 1
add rbp, 1
or dil, al
add rbx, 2
cmp r12d, esi
mov byte [rbp - 1], dil
jb 0x18308
mov rbx, qword [rsp + 0x860]
mov rbp, qword [rsp + 0x868]
test esi, esi
je 0x1886c
test esi, esi
mov r8d, 0x12345678
mov edi, r8d
je 0x183e1
mov r9, r13
mov r10d, esi
movzx edx, byte [rsp + r9 + 0x420]
add r9, 1
xor dl, dil
movsx ecx, dl
mov byte [rsp + r9 + 0x1f], dl
lea edi, [rcx + rdi + 0x4d2]
lea eax, [rcx + 7]
imul edi, eax
lea eax, [rcx + 0x4d2]
xor edi, eax
mov eax, edi
shr eax, 0x16
add edi, eax
mov eax, edi
shr eax, 0x10
xor edi, eax
sub r10, 1
jne 0x183a0
movsx eax, byte [rsp + 0x20]
cmp esi, eax
jne 0x1886c
cmp byte [r15 + rbx], 0x2e
jne 0x18463
or rcx, 0xffffffffffffffff
xor eax, eax
lea r9, [r15 + rbx + 1]
mov rdi, r9
repne scasb al, byte [rdi]
not rcx
sub rcx, 1
test ecx, ecx
je 0x18467
lea rax, [rsp + 0x420]
lea rdi, [rsp + 0x420]
mov r10d, ecx
sub r9, rax
movsx eax, byte [r9 + rdi]
add rdi, 1
lea r8d, [rax + r8 + 0x4d2]
mov ecx, eax
add eax, 7
imul r8d, eax
lea eax, [rcx + 0x4d2]
xor r8d, eax
mov eax, r8d
shr eax, 0x16
add r8d, eax
mov eax, r8d
shr eax, 0x10
xor r8d, eax
sub r10, 1
jne 0x18426
jmp 0x18467
xor r8w, r8w
movzx eax, byte [rsp + 0x21]
cmp al, 1
mov byte [rbp], al
je 0x187ff
cmp al, 2
je 0x1875e
cmp al, 2
jbe 0x1886c
cmp al, 4
ja 0x1886c
cmp esi, 9
jl 0x1886c
movzx edx, byte [rsp + 0x23]
cmp al, 3
movsx eax, byte [rsp + 0x22]
mov r10, r14
cmove r10, r14
shl ax, 8
movzx eax, ax
or edx, eax
movzx eax, byte [rsp + 0x25]
shl edx, 0x10
and edx, 0xffff0000
or edx, eax
movsx eax, byte [rsp + 0x24]
shl ax, 8
movzx ecx, ax
or edx, ecx
mov dword [r10 + 4], edx
movzx edx, byte [rsp + 0x26]
test r13b, dl
mov byte [r10 + 0xa], dl
jne 0x1886c
test dl, 0x40
mov edi, 7
je 0x18500
movzx eax, byte [rsp + 0x27]
mov edi, 8
mov byte [r10 + 0xb], al
test byte [r10 + 0xb], 0xe0
jne 0x1886c
test dl, 1
je 0x1852b
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10], cx
test dl, 2
je 0x1854c
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10 + 8], cx
cmp byte [rbp], 3
jne 0x1859c
test dl, 4
je 0x18573
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r14 + 0x20], cx
test byte [r10 + 0xa], 8
je 0x18611
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r14 + 0x22], cx
jmp 0x18611
test dl, dl
jns 0x18611
movsxd rax, edi
add edi, 1
movsx ecx, byte [rsp + rax + 0x20]
movsxd rax, edi
test ecx, ecx
mov dword [r14 + 0x20], ecx
je 0x18611
lea rdx, [rsp + rax + 0x20]
lea r9, [rsp + rax + 0x21]
lea r11, [r14 + 0x26]
nop
nop
nop
movsx eax, byte [rdx]
movzx ecx, byte [r9]
add r13d, 1
shl ax, 8
add r11, 4
add edi, 4
or cx, ax
movsx eax, byte [rdx + 2]
add r9, 4
mov word [r11 - 6], cx
movzx ecx, byte [r9 - 2]
shl ax, 8
or cx, ax
add rdx, 4
mov word [r11 - 4], cx
cmp r13d, dword [r14 + 0x20]
jb 0x185d0
movzx edx, byte [r10 + 0xa]
test dl, 0x10
je 0x18637
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10 + 0xc], cx
test dl, 0x20
je 0x18658
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10 + 0xe], cx
movzx r9d, byte [r10 + 0xb]
test r9b, 2
je 0x1868e
movsxd rax, edi
add edi, 1
movzx ecx, byte [rsp + rax + 0x20]
movsxd rax, edi
mov byte [r10 + 0x10], cl
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10 + 0x12], cx
test r9b, 4
je 0x186bf
movsxd rax, edi
add edi, 1
movzx ecx, byte [rsp + rax + 0x20]
movsxd rax, edi
mov byte [r10 + 0x14], cl
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
shl ax, 8
or cx, ax
add edi, 2
mov word [r10 + 0x16], cx
test r9b, 8
je 0x18700
movsxd rcx, edi
movsx eax, byte [rsp + rcx + 0x20]
movzx edx, byte [rsp + rcx + 0x21]
shl ax, 8
movzx eax, ax
or edx, eax
movzx eax, byte [rsp + rcx + 0x23]
shl edx, 0x10
and edx, 0xffff0000
or edx, eax
movsx eax, byte [rsp + rcx + 0x22]
shl ax, 8
movzx ecx, ax
or edx, ecx
add edi, 4
mov dword [r10 + 0x18], edx
test r9b, 0x10
je 0x18741
movsxd rcx, edi
movsx eax, byte [rsp + rcx + 0x20]
movzx edx, byte [rsp + rcx + 0x21]
shl ax, 8
movzx eax, ax
or edx, eax
movzx eax, byte [rsp + rcx + 0x23]
shl edx, 0x10
and edx, 0xffff0000
or edx, eax
movsx eax, byte [rsp + rcx + 0x22]
shl ax, 8
movzx ecx, ax
or edx, ecx
add edi, 4
mov dword [r10 + 0x1c], edx
lea eax, [rdi + 2]
cmp eax, esi
jne 0x1886c
movsxd rax, edi
movzx ecx, byte [rsp + rax + 0x21]
movsx eax, byte [rsp + rax + 0x20]
jmp 0x18858
cmp esi, 0x10
jne 0x1886c
movsx eax, byte [rsp + 0x22]
movzx ecx, byte [rsp + 0x23]
movzx edx, byte [rsp + 0x25]
shl ax, 8
or cx, ax
movsx eax, byte [rsp + 0x24]
shl ax, 8
mov word [r14], cx
movzx eax, ax
or edx, eax
movzx eax, byte [rsp + 0x27]
shl edx, 0x10
and edx, 0xffff0000
or edx, eax
movsx eax, byte [rsp + 0x26]
shl ax, 8
movzx ecx, ax
movsx eax, byte [rsp + 0x28]
or edx, ecx
movzx ecx, byte [rsp + 0x29]
shl ax, 8
or cx, ax
movsx eax, byte [rsp + 0x2a]
mov dword [r14 + 4], edx
mov word [r14 + 8], cx
movzx ecx, byte [rsp + 0x2b]
shl ax, 8
or cx, ax
movsx eax, byte [rsp + 0x2c]
mov word [r14 + 0xa], cx
movzx ecx, byte [rsp + 0x2d]
shl ax, 8
or cx, ax
movsx eax, byte [rsp + 0x2e]
mov word [r14 + 0xc], cx
movzx ecx, byte [rsp + 0x2f]
jmp 0x18858
cmp esi, 0xa
jne 0x1886c
movsx eax, byte [rsp + 0x22]
movzx ecx, byte [rsp + 0x23]
movzx edx, byte [rsp + 0x25]
shl ax, 8
or cx, ax
movsx eax, byte [rsp + 0x24]
shl ax, 8
mov word [r14], cx
movzx eax, ax
or edx, eax
movzx eax, byte [rsp + 0x27]
shl edx, 0x10
and edx, 0xffff0000
or edx, eax
movsx eax, byte [rsp + 0x26]
shl ax, 8
movzx ecx, ax
movsx eax, byte [rsp + 0x28]
or edx, ecx
movzx ecx, byte [rsp + 0x29]
mov dword [r14 + 4], edx
shl ax, 8
or cx, ax
cmp r8w, cx
jne 0x1886c
mov eax, 1
jmp 0x1886e
xor eax, eax
mov r12, qword [rsp + 0x870]
add rsp, 0x820
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret