Function at 0x140013c70
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov eax, 0x1538
call fcn.14005afd0
sub rsp, rax
mov rsi, rdx
mov eax, dword [rdx + 0x44]
mov edi, dword [rdx + 0x58]
mov rdx, rdi
mov qword [rsp + 0x38], rax
imul rdx, rax
mov rax, rdx
shr rax, 0x36
jne 0x140014a2b
mov r14, rdx
shl r14, 0xa
movabs rax, 0x7ffffffffffffff9
cmp r14, rax
jae 0x140014a2b
mov qword [rsp + 0xf0], rcx
test r14, r14
mov qword [rsp + 0x30], rdx
je 0x140013d29
movzx eax, byte [0x141d1d110]
xor ecx, ecx
mov rdx, r14
call fcn.140040a50
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0x28], rax
test rax, rax
je 0x140014a2b
cmp rdx, 2
mov qword [rsp + 0x50], rdi
jb 0x140013d3e
lea r8, [r14 - 0x400]
mov rdi, qword [rsp + 0x28]
mov rcx, rdi
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
lea rcx, [rdi + r14]
add rcx, 0xfffffffffffffc00
jmp 0x140013d48
mov eax, 8
mov qword [rsp + 0x28], rax
cmp rdx, 2
mov qword [rsp + 0x50], rdi
jae 0x140013d06
mov rcx, qword [rsp + 0x28]
test rdx, rdx
je 0x140013d55
mov r8d, 0x400
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r14, qword [rsp + 0x38]
mov dword [rsp + 0xa8], r14d
mov eax, dword [rsi + 0x40]
mov qword [rsp + 0xe8], rax
mov dword [rsp + 0xac], eax
mov eax, dword [rsi + 0x48]
mov dword [rsp + 0xb0], eax
mov eax, dword [rsi + 0x4c]
mov qword [rsp + 0x58], rax
mov dword [rsp + 0xb4], eax
movzx eax, byte [rsi + 0x50]
mov dword [rsp + 0x94], eax
mov dword [rsp + 0xb8], eax
movzx eax, byte [rsi + 0x51]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0xbc], eax
mov r11, qword [rsi]
mov rdi, qword [rsi + 8]
mov dword [rsp + 0xc0], edi
mov r9, qword [rsi + 0x10]
mov r10, qword [rsi + 0x18]
mov dword [rsp + 0xc4], r10d
mov rdx, qword [rsi + 0x30]
mov r8, qword [rsi + 0x38]
mov dword [rsp + 0x1138], r8d
mov rax, qword [rsi + 0x20]
mov rcx, qword [rsi + 0x28]
mov dword [rsp + 0x530], ecx
lea rbx, [rsp + 0xa8]
mov qword [rsp + 0x130], rbx
mov qword [rsp + 0x138], 4
lea rbx, [rsp + 0xac]
mov qword [rsp + 0x140], rbx
mov qword [rsp + 0x148], 4
lea rbx, [rsp + 0xb0]
mov qword [rsp + 0x150], rbx
mov qword [rsp + 0x158], 4
lea rbx, [rsp + 0xb4]
mov qword [rsp + 0x160], rbx
mov qword [rsp + 0x168], 4
lea rbx, [rsp + 0xb8]
mov qword [rsp + 0x170], rbx
mov qword [rsp + 0x178], 4
lea rbx, [rsp + 0xbc]
mov qword [rsp + 0x180], rbx
mov qword [rsp + 0x188], 4
lea rbx, [rsp + 0xc0]
mov qword [rsp + 0x190], rbx
mov qword [rsp + 0x198], 4
mov qword [rsp + 0x1a0], r11
mov qword [rsp + 0x1a8], rdi
lea r11, [rsp + 0xc4]
mov qword [rsp + 0x1b0], r11
mov qword [rsp + 0x1b8], 4
mov qword [rsp + 0x1c0], r9
mov qword [rsp + 0x1c8], r10
lea r9, [rsp + 0x1138]
mov qword [rsp + 0x1d0], r9
mov qword [rsp + 0x1d8], 4
mov qword [rsp + 0x1e0], rdx
mov qword [rsp + 0x1e8], r8
lea rdx, [rsp + 0x530]
mov qword [rsp + 0x1f0], rdx
mov qword [rsp + 0x1f8], 4
mov qword [rsp + 0x200], rax
mov qword [rsp + 0x208], rcx
xorps xmm0, xmm0
movaps xmmword [rsp + 0xd60], xmm0
movaps xmmword [rsp + 0xd50], xmm0
movaps xmmword [rsp + 0xd40], xmm0
movaps xmmword [rsp + 0xd30], xmm0
mov qword [rsp + 0xd70], 0
lea rcx, [rsp + 0xd30]
lea r8, [rsp + 0x130]
mov edx, 0x40
mov r9d, 0xe
call fcn.140014a30
movaps xmm0, xmmword [rsp + 0xd30]
movaps xmm1, xmmword [rsp + 0xd40]
movaps xmm2, xmmword [rsp + 0xd50]
movaps xmm3, xmmword [rsp + 0xd60]
movaps xmmword [rsp + 0x960], xmm3
movaps xmmword [rsp + 0x950], xmm2
movaps xmmword [rsp + 0x940], xmm1
movaps xmmword [rsp + 0x930], xmm0
test r14d, r14d
je 0x140014096
mov rax, qword [rsp + 0x50]
mov rdi, rax
shl rdi, 0xa
mov ebx, 1
sub rbx, rax
xor r12d, r12d
lea r14, [rsp + 0x930]
mov r15, qword [rsp + 0x28]
xor r13d, r13d
nop word cs:[rax + rax]
mov dword [rsp + 0x970], 0
mov dword [rsp + 0x974], r13d
mov rbp, qword [rsp + 0x30]
cmp r12, rbp
jae 0x140014a2b
mov edx, 0x400
mov r9d, 0x48
mov rcx, r15
mov r8, r14
call fcn.140014eb0
mov dword [rsp + 0x970], 1
add r12, qword [rsp + 0x50]
lea rax, [rbx + r12]
cmp rax, rbp
jae 0x140014a2b
lea rbp, [r15 + rdi]
inc r13
add r15, 0x400
mov edx, 0x400
mov r9d, 0x48
mov rcx, r15
mov r8, r14
call fcn.140014eb0
mov r15, rbp
cmp qword [rsp + 0x38], r13
jne 0x140014010
cmp qword [rsp + 0x58], 0
mov r12, qword [rsp + 0x50]
mov rax, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x60]
je 0x14001476f
cmp dword [rsp + 0x38], 0
je 0x1400148b5
mov eax, dword [rsi + 0x5c]
mov qword [rsp + 0xc8], rax
test r12, r12
je 0x140014943
mov esi, dword [rsi + 0x60]
mov eax, esi
neg eax
mov dword [rsp + 0xa0], eax
mov eax, esi
not eax
mov qword [rsp + 0x128], rax
add eax, r12d
mov qword [rsp + 0x120], rax
lea r14, [rsp + 0xd30]
xor ebx, ebx
mov dword [rsp + 0xa4], esi
jmp 0x140014126
mov rcx, qword [rsp + 0xf8]
mov rbx, rcx
cmp rcx, qword [rsp + 0x58]
je 0x14001476f
lea rax, [rbx + 1]
mov qword [rsp + 0xf8], rax
test rbx, rbx
sete byte [rsp + 0x25]
mov ecx, 0xffffffff
xor edx, edx
xor r9d, r9d
mov qword [rsp + 0x110], rbx
jmp 0x140014165
add edx, esi
add ecx, esi
mov r8, qword [rsp + 0x100]
mov r9, r8
cmp r8, 4
je 0x140014110
mov dword [rsp + 0x98], edx
mov dword [rsp + 0x9c], ecx
lea rax, [r9 + 1]
test r9, r9
sete byte [rsp + 0x26]
mov r8, r9
or r8, rbx
mov qword [rsp + 0x108], r8
mov r8d, esi
imul r8d, r9d
mov qword [rsp + 0x100], rax
mov r15d, eax
imul r15d, esi
mov qword [rsp + 0xd0], r9
cmp r9, 3
mov eax, 0
cmove r15, rax
mov qword [rsp + 0xd8], r8
lea eax, [r8 - 1]
mov qword [rsp + 0x118], rax
mov eax, ecx
mov qword [rsp + 0x78], rax
mov eax, edx
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x40], 0
mov qword [rsp + 0xe0], r15
jmp 0x140014248
mov rcx, qword [rsp + 0x40]
inc rcx
mov rax, qword [rsp + 0x88]
add eax, r12d
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x78]
add eax, r12d
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x40], rcx
cmp rcx, qword [rsp + 0x38]
mov rax, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x110]
mov ecx, dword [rsp + 0x9c]
mov edx, dword [rsp + 0x98]
je 0x140014150
cmp rdi, 1
je 0x1400142f0
cmp edi, 2
jne 0x140014260
test rbx, rbx
je 0x1400146e3
mov qword [rsp + 0x70], 0
mov r8d, 0x400
lea rcx, [rsp + 0x1138]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x400
lea rcx, [rsp + 0x530]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x400
lea rcx, [rsp + 0x930]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
cmp dword [rsp + 0x108], 0
je 0x14001438e
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x80], 0
movzx eax, byte [rsp + 0x26]
mov qword [rsp + 0x68], rax
movzx eax, byte [rsp + 0x25]
mov byte [rsp + 0x24], al
xor edi, edi
cmp edi, esi
jae 0x1400141f0
jmp 0x140014439
mov r8d, 0x400
lea rcx, [rsp + 0x1138]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x3d0
lea rcx, [rsp + 0x560]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x400
lea rcx, [rsp + 0x930]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov rax, qword [rsp + 0xd0]
mov qword [rsp + 0x530], rbx
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x538], rcx
mov qword [rsp + 0x540], rax
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x548], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x550], rax
mov qword [rsp + 0x558], rdi
mov al, 1
mov qword [rsp + 0x70], rax
cmp dword [rsp + 0x108], 0
jne 0x1400142b6
mov edi, 2
mov al, 1
mov qword [rsp + 0x80], rax
cmp byte [rsp + 0x70], 0
je 0x14001441c
mov qword [rsp + 0x560], 1
lea rbx, [rsp + 0x1138]
mov rcx, rbx
lea rdx, [rsp + 0x530]
lea r15, [rsp + 0x930]
mov r8, r15
xor r9d, r9d
call fcn.1400150b0
mov r8d, 0x400
lea r14, [rsp + 0x130]
mov rcx, r14
mov rdx, r15
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov rcx, rbx
mov rdx, r14
lea r14, [rsp + 0xd30]
mov r8, r15
mov r15, qword [rsp + 0xe0]
xor r9d, r9d
call fcn.1400150b0
mov eax, 1
mov qword [rsp + 0x48], rax
jmp 0x140014425
mov qword [rsp + 0x48], 0
mov al, 1
mov qword [rsp + 0x68], rax
mov byte [rsp + 0x24], 1
cmp edi, esi
jae 0x1400141f0
cmp byte [rsp + 0x94], 0x10
setne r8b
mov ecx, r12d
imul ecx, dword [rsp + 0x40]
add ecx, dword [rsp + 0xd8]
add ecx, edi
mov eax, ecx
xor edx, edx
div r12d
test edx, edx
mov eax, 0
cmove eax, r12d
lea r13d, [rax + rcx]
dec r13d
movzx eax, byte [rsp + 0x24]
xor al, 1
and al, r8b
mov byte [rsp + 0x27], al
nop dword [rax]
mov rax, qword [rsp + 0x88]
lea esi, [rax + rdi]
mov eax, esi
xor edx, edx
div r12d
cmp edx, 1
jne 0x1400144a0
mov rax, qword [rsp + 0x78]
lea r13d, [rax + rdi]
mov r8, qword [rsp + 0x30]
mov ebp, r13d
cmp byte [rsp + 0x70], 0
je 0x140014550
mov ebx, edi
and ebx, 0x7f
jne 0x140014536
mov rcx, qword [rsp + 0x48]
inc rcx
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x560], rcx
lea rcx, [rsp + 0x1138]
lea rdx, [rsp + 0x530]
lea r14, [rsp + 0x930]
mov r8, r14
xor r9d, r9d
call fcn.1400150b0
mov r8d, 0x400
lea r15, [rsp + 0x130]
mov rcx, r15
mov rdx, r14
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
lea rcx, [rsp + 0x1138]
mov rdx, r15
mov r15, qword [rsp + 0xe0]
mov r8, r14
lea r14, [rsp + 0xd30]
xor r9d, r9d
call fcn.1400150b0
mov r8, qword [rsp + 0x30]
mov eax, ebx
lea rax, [rsp + rax*8]
add rax, 0x930
jmp 0x140014565
cmp r8, rbp
jbe 0x140014a2b
mov rax, rbp
shl rax, 0xa
add rax, qword [rsp + 0x28]
mov rcx, qword [rax]
mov rax, qword [rsp + 0x40]
mov edx, eax
cmp byte [rsp + 0x80], 0
jne 0x140014586
mov rax, rcx
shr rax, 0x20
xor edx, edx
div dword [rsp + 0x38]
mov ebx, edx
cmp byte [rsp + 0x24], 0
je 0x1400145a0
cmp byte [rsp + 0x68], 0
je 0x1400145c0
lea edx, [rdi - 1]
jmp 0x140014600
test edi, edi
mov edx, dword [rsp + 0xa0]
cmove edx, dword [rsp + 0x128]
cmp qword [rsp + 0x40], rbx
je 0x1400145e0
add edx, r12d
mov rax, r15
jmp 0x140014602
cmp qword [rsp + 0x40], rbx
jne 0x1400145f0
mov rax, qword [rsp + 0x118]
lea edx, [rax + rdi]
jmp 0x140014600
mov rax, qword [rsp + 0x120]
lea edx, [rax + rdi]
mov rax, r15
jmp 0x140014602
cmp edi, 1
mov rax, qword [rsp + 0xd8]
mov edx, eax
sbb edx, 0
xor eax, eax
mov ecx, ecx
imul rcx, rcx
shr rcx, 0x20
mov edx, edx
imul rcx, rdx
shr rcx, 0x20
not rcx
add rax, rdx
add rax, rcx
mov rcx, rax
shr rcx, 0x20
je 0x140014640
xor edx, edx
div r12
mov r12, rdx
mov esi, esi
cmp r8, rsi
ja 0x140014653
jmp 0x140014a2b
xor edx, edx
div r12d
mov r12d, edx
mov esi, esi
cmp r8, rsi
jbe 0x140014a2b
shl rsi, 0xa
add rsi, qword [rsp + 0x28]
mov r8d, 0x400
mov rcx, r14
mov rdx, rsi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov rax, qword [rsp + 0x30]
cmp rax, rbp
jbe 0x140014a2b
imul rbx, qword [rsp + 0x50]
add r12, rbx
cmp r12, rax
jae 0x140014a2b
inc edi
shl rbp, 0xa
mov rax, qword [rsp + 0x28]
add rbp, rax
shl r12, 0xa
add r12, rax
mov rcx, rbp
mov rdx, r12
mov r8, r14
movzx r9d, byte [rsp + 0x27]
call fcn.1400150b0
mov r8d, 0x400
mov rcx, rsi
mov rdx, r14
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
inc r13d
mov esi, dword [rsp + 0xa4]
cmp esi, edi
mov r12, qword [rsp + 0x50]
jne 0x140014480
jmp 0x1400141f0
mov qword [rsp + 0x70], 0
mov r8d, 0x400
lea rcx, [rsp + 0x1138]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x400
lea rcx, [rsp + 0x530]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov r8d, 0x400
lea rcx, [rsp + 0x930]
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov rax, qword [rsp + 0xd0]
cmp rax, 2
jb 0x140014337
mov byte [rsp + 0x24], 1
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x68], 0
xor edi, edi
cmp edi, esi
jae 0x1400141f0
jmp 0x140014439
lea esi, [r12 - 1]
cmp rax, rsi
jbe 0x140014a2b
mov rdx, rsi
shl rdx, 0xa
add rdx, qword [rsp + 0x28]
lea rcx, [rsp + 0x130]
mov r8d, 0x400
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
cmp dword [rsp + 0x38], 2
mov r10, qword [rsp + 0x30]
jb 0x140014886
mov rax, qword [rsp + 0x28]
add rax, 0x30
lea ecx, [r12*2 - 1]
mov edx, 1
nop word cs:[rax + rax]
mov r8d, r12d
imul r8d, edx
add r8d, esi
cmp r10, r8
jbe 0x140014a2b
mov r8d, ecx
shl r8, 0xa
add r8, rax
inc rdx
xor r9d, r9d
nop word cs:[rax + rax]
movups xmm0, xmmword [r8 + r9*8 - 0x30]
movups xmm1, xmmword [r8 + r9*8 - 0x20]
movups xmm2, xmmword [rsp + r9*8 + 0x130]
xorps xmm2, xmm0
movups xmm0, xmmword [rsp + r9*8 + 0x140]
xorps xmm0, xmm1
movups xmm1, xmmword [rsp + r9*8 + 0x150]
movups xmm3, xmmword [rsp + r9*8 + 0x160]
movups xmmword [rsp + r9*8 + 0x130], xmm2
movups xmmword [rsp + r9*8 + 0x140], xmm0
movups xmm0, xmmword [r8 + r9*8 - 0x10]
xorps xmm0, xmm1
movups xmm1, xmmword [r8 + r9*8]
xorps xmm1, xmm3
movups xmmword [rsp + r9*8 + 0x150], xmm0
movups xmmword [rsp + r9*8 + 0x160], xmm1
add r9, 8
cmp r9, 0x80
jne 0x140014800
add ecx, r12d
cmp rdx, qword [rsp + 0x38]
jne 0x1400147d0
mov rsi, qword [rsp + 0xe8]
test rsi, rsi
je 0x1400148ed
movzx eax, byte [0x141d1d110]
mov ecx, 8
mov rdx, rsi
call fcn.140040a50
test rax, rax
je 0x140014a2b
mov rcx, rax
jmp 0x1400148f2
dec r12d
cmp rax, r12
jbe 0x140014a2b
shl r12, 0xa
add r12, qword [rsp + 0x28]
lea rcx, [rsp + 0x130]
mov r8d, 0x400
mov rdx, r12
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov rsi, qword [rsp + 0xe8]
test rsi, rsi
jne 0x140014893
mov ecx, 1
mov rax, qword [rsp + 0xf0]
mov qword [rax], rsi
mov qword [rax + 8], rcx
mov qword [rax + 0x10], rsi
lea r8, [rsp + 0x130]
mov r9d, 0x400
mov rdx, rsi
call fcn.140014eb0
mov rcx, qword [0x141d1d0f0]
xor edx, edx
mov r8, qword [rsp + 0x28]
call fcn.14004dc58
nop
add rsp, 0x1538
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp rdi, 1
je 0x140014954
cmp dword [rsp + 0x60], 2
jne 0x140014a2b
lea rcx, [rsp + 0x1138]
mov r8d, 0x400
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
lea rcx, [rsp + 0x568]
mov r8d, 0x3c8
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
lea rsi, [rsp + 0x930]
mov r8d, 0x400
mov rcx, rsi
xor edx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
xorps xmm0, xmm0
movaps xmmword [rsp + 0x530], xmm0
mov qword [rsp + 0x540], 0
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x548], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x550], rax
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x558], rax
mov qword [rsp + 0x560], 1
lea rdi, [rsp + 0x1138]
lea rdx, [rsp + 0x530]
mov rcx, rdi
mov r8, rsi
xor r9d, r9d
call fcn.1400150b0
lea rbx, [rsp + 0x130]
mov r8d, 0x400
mov rcx, rbx
mov rdx, rsi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov rcx, rdi
mov rdx, rbx
mov r8, rsi
xor r9d, r9d
call fcn.1400150b0
ud2