Function at 0x18003f230
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push r15
lea rbp, [rsp - 0xd8]
sub rsp, 0x1d8
mov rsi, rcx
xor r15d, r15d
mov dword [rdx], r15d
mov rbx, rdx
mov ecx, dword [rcx + 0x18]
mov rax, qword [rsi + 8]
sub rax, qword [rsi]
cmp rcx, rax
jb 0x18003f26b
xor al, al
jmp 0x18003f386
lea eax, [rcx + 1]
xor edx, edx
mov dword [rsi + 0x18], eax
mov rax, qword [rsi]
movzx ecx, byte [rcx + rax]
mov byte [rbp + 0x100], cl
mov dword [rsp + 0x28], 0xe2
mov dword [rsp + 0x20], 0x1e
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rsp + 0x20], ecx
inc eax
mov ecx, dword [rsp + 0x20]
div ecx
mov byte [rsi + 0x188], dl
xor edx, edx
mov dword [rsp + 0x28], 0x17
mov dword [rsp + 0x20], 0xe9
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rsp + 0x20], ecx
movzx ecx, byte [rsi + 0x189]
movzx eax, byte [rax + rsi + 0x88]
add eax, ecx
mov ecx, dword [rsp + 0x20]
movzx r8d, byte [rsi + 0x188]
div ecx
mov byte [rsi + 0x189], dl
movzx r9d, byte [r8 + rsi + 0x88]
movzx eax, dl
movzx ecx, byte [rax + rsi + 0x88]
mov byte [r8 + rsi + 0x88], cl
movzx eax, byte [rsi + 0x189]
mov byte [rax + rsi + 0x88], r9b
mov dword [rsp + 0x28], 0x5a
mov dword [rsp + 0x20], 0xa6
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov r8d, dword [rsp + 0x20]
movzx eax, byte [rsi + 0x188]
movzx ecx, byte [rsi + 0x189]
movzx eax, byte [rax + rsi + 0x88]
movzx edx, byte [rcx + rsi + 0x88]
add eax, edx
xor edx, edx
div r8d
movzx eax, byte [rbp + 0x100]
xor al, byte [rdx + rsi + 0x88]
mov byte [rbp + 0x100], al
movzx ecx, al
mov dword [rbx], ecx
mov qword [rsp + 0x1b8], r14
sub ecx, 1
je 0x18003f9e5
sub ecx, 1
je 0x18003f3af
sub ecx, 1
je 0x18003f3bf
cmp ecx, 1
jne case.default.0x18003fb44
mov rcx, rsi
call fcn.18003ad60
mov dword [rbx + 4], eax
jmp 0x18003fb76
mov qword [rsp + 0x1d0], rdi
mov rcx, rsi
mov qword [rsp + 0x1c8], r12
mov qword [rsp + 0x1c0], r13
call fcn.18003aad0
movsx ecx, ax
xorps xmm0, xmm0
mov qword [rsp + 0x50], r15
movdqu xmmword [rsp + 0x40], xmm0
test ecx, ecx
jle 0x18003f56f
mov rdx, qword [rsp + 0x48]
mov ebx, ecx
nop
mov rax, qword [rsi + 8]
sub rax, qword [rsi]
mov ecx, dword [rsi + 0x18]
cmp rcx, rax
jb 0x18003f416
xor al, al
jmp 0x18003f536
lea eax, [rcx + 1]
xor edx, edx
mov dword [rsi + 0x18], eax
mov rax, qword [rsi]
movzx ecx, byte [rcx + rax]
mov byte [rbp + 0x110], cl
mov dword [rsp + 0x28], 0xe2
mov dword [rsp + 0x20], 0x1e
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rsp + 0x20], ecx
inc eax
mov ecx, dword [rsp + 0x20]
div ecx
mov byte [rsi + 0x188], dl
xor edx, edx
mov dword [rsp + 0x28], 0x17
mov dword [rsp + 0x20], 0xe9
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rsp + 0x20], ecx
movzx ecx, byte [rsi + 0x189]
movzx eax, byte [rax + rsi + 0x88]
add eax, ecx
mov ecx, dword [rsp + 0x20]
movzx r8d, byte [rsi + 0x188]
div ecx
mov byte [rsi + 0x189], dl
movzx r9d, byte [r8 + rsi + 0x88]
movzx eax, dl
movzx ecx, byte [rax + rsi + 0x88]
mov byte [r8 + rsi + 0x88], cl
movzx eax, byte [rsi + 0x189]
mov byte [rax + rsi + 0x88], r9b
mov dword [rsp + 0x28], 0x5a
mov dword [rsp + 0x20], 0xa6
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov r8d, dword [rsp + 0x20]
movzx eax, byte [rsi + 0x189]
movzx ecx, byte [rsi + 0x188]
movzx eax, byte [rax + rsi + 0x88]
movzx edx, byte [rcx + rsi + 0x88]
add eax, edx
xor edx, edx
div r8d
movzx eax, byte [rbp + 0x110]
xor al, byte [rdx + rsi + 0x88]
mov rdx, qword [rsp + 0x48]
mov byte [rbp + 0x110], al
mov byte [rbp + 0x118], al
cmp qword [rsp + 0x50], rdx
je 0x18003f54f
mov byte [rdx], al
inc rdx
mov qword [rsp + 0x48], rdx
jmp 0x18003f565
lea r8, [rbp + 0x118]
lea rcx, [rsp + 0x40]
call fcn.1803561d0
mov rdx, qword [rsp + 0x48]
sub rbx, 1
jne 0x18003f400
mov dword [rsp + 0x31], 0x7fb8eb77
mov dword [rsp + 0x35], 0x27cfb6
mov dword [rsp + 0x20], r15d
mov dword [rsp + 0x28], 6
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov qword [rsp + 0x28], r15
mov rax, qword [rsp + 0x28]
nop dword [rax]
nop dword [rax + rax]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x28]
sub cl, 0x57
xor cl, byte [rsp + rax + 0x32]
mov rax, qword [rsp + 0x28]
mov byte [rsp + rax + 0x32], cl
mov rax, qword [rsp + 0x28]
inc rax
mov qword [rsp + 0x28], rax
mov rax, qword [rsp + 0x28]
cmp rax, 6
jb 0x18003f5b0
movsxd rdi, dword [rsp + 0x20]
lea rcx, [rbp - 0x80]
mov byte [rsp + 0x38], r15b
call fcn.1800388e0
mov rbx, r15
nop dword [rax + rax]
movzx edx, byte [rsp + rbx + 0x32]
lea rcx, [rbp - 0x80]
call fcn.180039040
inc rbx
cmp rbx, rdi
jl 0x18003f600
mov dl, 1
lea rcx, [rbp - 0x80]
call fcn.180039040
mov edi, 1
cmp dword [rbp + 0x88], r15d
jne 0x18003f696
cmp dword [rbp + 0x70], r15d
jne 0x18003f696
mov dword [rsp + 0x20], 0xa
mov ebx, r15d
mov dword [rsp + 0x28], 6
mov ecx, dword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
nop word [rax + rax]
lea rcx, [rbp - 0x80]
call fcn.180038cc0
mov dword [rsp + 0x20], 0xa
inc ebx
mov dword [rsp + 0x28], 6
mov ecx, dword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
cmp ebx, eax
jb 0x18003f660
jmp 0x18003f7cf
mov dword [rsp + 0x28], 3
lea r8, [rbp + 0x74]
mov dword [rsp + 0x20], r15d
xor edx, edx
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov ecx, dword [rsp + 0x20]
mov eax, dword [rbp + 0x88]
div ecx
mov eax, dword [rbp + 0x70]
mov dword [rbp + rdx*4 + 0x74], eax
mov edx, r15d
mov dword [rsp + 0x28], 2
mov dword [rsp + 0x20], edi
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
nop dword [rax + rax]
mov dword [rsp + 0x28], 3
lea r8, [r8 + 4]
mov dword [rsp + 0x20], 0xa
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
lea rcx, [rbp - 0x30]
mov eax, dword [rsp + 0x20]
imul eax, edx
lea rcx, [rcx + rax*4]
mov eax, dword [r8 - 4]
xor dword [rcx], eax
mov dword [rsp + 0x28], 0xd
mov dword [rsp + 0x20], 3
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
lea rcx, [rbp - 0x80]
mov eax, dword [rsp + 0x20]
add eax, edx
inc edx
lea rcx, [rcx + rax*4]
mov eax, dword [r8 - 4]
xor dword [rcx], eax
mov dword [rsp + 0x28], 2
mov dword [rsp + 0x20], edi
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
cmp edx, eax
jb 0x18003f6f0
mov dword [rsp + 0x28], edi
mov ebx, r15d
mov dword [rsp + 0x20], 0x10
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
lea rcx, [rbp - 0x80]
call fcn.180038cc0
mov dword [rsp + 0x28], edi
inc ebx
mov dword [rsp + 0x20], 0x10
mov ecx, dword [rsp + 0x20]
mov eax, dword [rsp + 0x28]
add ecx, eax
mov dword [rsp + 0x20], ecx
mov eax, dword [rsp + 0x20]
cmp ebx, eax
jb 0x18003f7a2
mov rbx, qword [rsp + 0x48]
mov r13d, r15d
mov r14, qword [rsp + 0x40]
mov r12d, ebx
mov edx, dword [rbp + 0x84]
sub r12d, r14d
cmp r12d, 4
jl 0x18003f83b
mov r13d, r12d
mov rbx, r14
shr r13, 2
mov eax, r13d
mov r15, r13
neg eax
lea r12d, [r12 + rax*4]
lea eax, [rdx - 1]
cmp eax, edi
jbe 0x18003f81c
lea rcx, [rbp - 0x80]
call fcn.180038cc0
mov edx, edi
mov dword [rbp + 0x84], edx
movsxd rax, edx
inc edx
mov ecx, dword [rbp + rax*4 - 0x80]
xor dword [rbx], ecx
add rbx, 4
mov dword [rbp + 0x84], edx
sub r15, rdi
jne 0x18003f804
mov rbx, qword [rsp + 0x48]
lea eax, [rdx - 1]
lea r15d, [r13*4]
cmp eax, edi
jbe 0x18003f85b
lea rcx, [rbp - 0x80]
call fcn.180038cc0
mov edx, edi
mov dword [rbp + 0x84], edx
movsxd rax, edx
mov ecx, dword [rbp + rax*4 - 0x80]
mov dword [rsp + 0x3c], ecx
movsxd rcx, r12d
test r12d, r12d
jle 0x18003f893
movsxd rdx, r15d
add rdx, r14
nop dword [rax]
nop dword [rax + rax]
movzx eax, byte [rsp + rcx + 0x3c]
dec rcx
xor byte [rdx], al
lea rdx, [rdx + 1]
test rcx, rcx
jg 0x18003f880
movdqa xmm0, xmmword [0x18038f440]
lea rcx, [rsp + 0x58]
mov rdx, rbx
mov byte [rsp + 0x58], 0
sub rdx, r14
movdqu xmmword [rsp + 0x68], xmm0
call fcn.180358770
mov r8, rbx
lea rcx, [rsp + 0x58]
mov rdx, r14
call fcn.180359630
lea rdx, [rsp + 0x58]
lea rcx, [rbp + 0x90]
call fcn.1803520c0
mov rbx, qword [rsi + 0x70]
lea r12, [rsi + 0x70]
mov r13, qword [rsi + 0x78]
mov r15, rax
cmp rbx, r13
je 0x18003f927
mov rsi, qword [rax + 0x10]
nop
cmp qword [rbx + 0x18], 0x10
mov rdx, rbx
jb 0x18003f8fd
mov rdx, qword [rbx]
cmp qword [r15 + 0x18], 0x10
mov rcx, r15
jb 0x18003f90a
mov rcx, qword [r15]
cmp rsi, qword [rbx + 0x10]
jne 0x18003f91c
mov r8, rsi
call fcn.180363120
test eax, eax
je 0x18003f929
add rbx, 0x20
inc edi
cmp rbx, r13
jne 0x18003f8f0
xor edi, edi
mov rcx, r15
call fcn.180353810
mov rbx, qword [rbp + 0x108]
test edi, edi
mov r13, qword [rsp + 0x1c0]
mov dword [rbx + 4], edi
mov rdi, qword [rsp + 0x1d0]
jne 0x18003f990
mov rax, qword [r12 + 8]
cmp qword [r12 + 0x10], rax
je 0x18003f970
lea rdx, [rsp + 0x58]
mov rcx, rax
call fcn.1803520c0
add qword [r12 + 8], 0x20
jmp 0x18003f980
lea r8, [rsp + 0x58]
mov rdx, rax
mov rcx, r12
call fcn.1803564e0
mov rax, qword [r12 + 8]
sub rax, qword [r12]
sar rax, 5
mov dword [rbx + 4], eax
lea rcx, [rsp + 0x58]
call fcn.180353810
mov r12, qword [rsp + 0x1c8]
test r14, r14
je 0x18003fb76
mov rdx, qword [rsp + 0x50]
mov rax, r14
sub rdx, r14
cmp rdx, 0x1000
jb 0x18003f9d8
mov r14, qword [r14 - 8]
add rdx, 0x27
sub rax, r14
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003fb8e
mov rcx, r14
call fcn.180360d9c
jmp 0x18003fb76
mov rax, qword [rsi + 8]
sub rax, qword [rsi]
mov ecx, dword [rsi + 0x18]
cmp rcx, rax
jb 0x18003f9fb
xor al, al
jmp 0x18003fb24
lea eax, [rcx + 1]
xor edx, edx
mov dword [rsi + 0x18], eax
mov rax, qword [rsi]
movzx ecx, byte [rcx + rax]
mov byte [rsp + 0x30], cl
mov dword [rsp + 0x20], 0xe2
mov dword [rbp + 0x108], 0x1e
mov ecx, dword [rbp + 0x108]
mov eax, dword [rsp + 0x20]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rbp + 0x108], ecx
inc eax
mov ecx, dword [rbp + 0x108]
div ecx
mov byte [rsi + 0x188], dl
xor edx, edx
mov dword [rsp + 0x20], 0x17
mov dword [rbp + 0x108], 0xe9
mov ecx, dword [rbp + 0x108]
mov eax, dword [rsp + 0x20]
add ecx, eax
movzx eax, byte [rsi + 0x188]
mov dword [rbp + 0x108], ecx
movzx ecx, byte [rsi + 0x189]
movzx eax, byte [rax + rsi + 0x88]
add eax, ecx
mov ecx, dword [rbp + 0x108]
movzx r8d, byte [rsi + 0x188]
div ecx
mov byte [rsi + 0x189], dl
movzx r9d, byte [r8 + rsi + 0x88]
movzx eax, dl
movzx ecx, byte [rax + rsi + 0x88]
mov byte [r8 + rsi + 0x88], cl
movzx eax, byte [rsi + 0x189]
mov byte [rax + rsi + 0x88], r9b
mov dword [rsp + 0x20], 0x5a
mov dword [rbp + 0x108], 0xa6
mov ecx, dword [rbp + 0x108]
mov eax, dword [rsp + 0x20]
add ecx, eax
mov dword [rbp + 0x108], ecx
mov r8d, dword [rbp + 0x108]
movzx eax, byte [rsi + 0x189]
movzx ecx, byte [rsi + 0x188]
movzx eax, byte [rax + rsi + 0x88]
movzx edx, byte [rcx + rsi + 0x88]
add eax, edx
xor edx, edx
div r8d
movzx eax, byte [rdx + rsi + 0x88]
xor al, byte [rsp + 0x30]
movzx eax, al
mov dword [rbx + 4], eax
dec eax
cmp eax, 5
ja case.default.0x18003fb44
lea rdx, [0x180000000]
cdqe
mov ecx, dword [rdx + rax*4 + 0x3fb94]
add rcx, rdx
jmp rcx
mov eax, 0x20
jmp 0x18003fb6e
mov eax, 0x28
jmp 0x18003fb6e
mov eax, 0x30
jmp 0x18003fb6e
mov eax, 0x38
jmp 0x18003fb6e
mov eax, 0x40
jmp 0x18003fb6e
mov eax, 0x48
add rax, rsi
jne 0x18003fb76
mov dword [rbx], r15d
mov r14, qword [rsp + 0x1b8]
mov rax, rbx
add rsp, 0x1d8
pop r15
pop rsi
pop rbx
pop rbp
ret
call fcn.1803687c0
int3