Function at 0x1400250d0
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 0x10], edx
mov dword [rsp + 8], ecx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov ecx, dword [0x140042b5c]
xor ebx, ebx
movzx r15d, byte [0x140042b67]
add ecx, 0xfffffffe
movzx r9d, byte [0x140042b65]
mov edi, 0x152
movzx r10d, byte [0x140042b66]
mov r13b, 0x1f
mov byte [rsp + 0xb8], 0x10
mov dword [rsp + 0x24], edi
and ecx, 3
je 0x140025184
sub ecx, 1
je 0x140025178
sub ecx, 1
je 0x140025159
cmp ecx, 1
je 0x14002514a
movzx eax, r9b
and eax, 0x17a
mov dword [0x140042b4c], ebx
xor dword [0x140042b68], eax
jmp 0x140025193
mov edi, dword [0x140042b68]
add edi, 2
mov dword [rsp + 0x24], edi
jmp 0x140025193
movzx eax, r15b
sar al, 0xc5
xor byte [0x140042b57], al
movzx eax, byte [0x140042b81]
or eax, 1
and dword [0x140042b6c], eax
jmp 0x140025193
movsx eax, r10b
add dword [0x140042b84], eax
jmp 0x140025193
movzx eax, byte [0x140042b6c]
and al, 1
and byte [0x140042b55], al
movzx r8d, byte [0x140042b40]
mov ecx, 0x32
mov edx, dword [0x140042a88]
add r8b, 0xb
and r8b, 0xb4
mov byte [0x140042a63], bl
xor r8b, dil
xor r8b, byte [0x140042b34]
nop
test r9b, r9b
mov eax, ebx
setne al
add edx, eax
sub ecx, 1
jne 0x1400251c0
cmp byte [0x140042b56], bl
mov ecx, ebx
mov dword [0x140042a88], edx
setne al
inc r15b
and r8b, al
mov eax, ebx
cmp edx, 0x32
mov byte [0x140042a87], r8b
sete cl
cmp ecx, 0x193
setg al
cmp dword [0x140042a64], eax
jne 0x140025212
test edi, edi
jne 0x140025212
mov ecx, dword [0x140042b2c]
jmp 0x140025221
mov ecx, dword [0x140042b2c]
and ecx, 1
mov dword [0x140042b2c], ecx
cmp r10b, 0x54
jne 0x140025240
movsx eax, r15b
sub eax, 0x81
mov dword [0x140042b7c], 1
shl eax, cl
test eax, eax
jne 0x140025246
mov dword [0x140042b7c], ebx
cmp byte [0x140042b54], bl
je 0x140025258
mov eax, 1
test r15b, r15b
js 0x14002525a
mov eax, ebx
or dword [0x140042b68], eax
cmp edx, 0xffffff73
sete byte [0x140042b83]
call qword [sym.imp.KERNEL32.dll_GetVersion]
movzx r14d, byte [0x140042b83]
mov ecx, 0xc0
movzx edx, byte [0x140042a62]
movzx r11d, byte [0x140042b82]
movzx eax, dl
sar al, 0xa0
add r14b, al
mov eax, dword [0x140042b84]
or eax, 0xffffff49
mov byte [0x140042b83], r14b
mov dword [0x140042b3c], eax
mov eax, 0xffffff9c
sub al, r11b
add dl, al
add ecx, 0xffffffff
jne 0x1400252b0
mov r9d, dword [0x140042b68]
movzx ecx, byte [0x140042b80]
mov r8d, dword [0x140042b44]
add ecx, 3
movzx ebp, byte [0x140042b54]
xor r8d, 0x54
mov r12d, dword [0x140042b58]
movsx eax, r15b
mov edx, eax
mov dword [rsp + 0x34], eax
imul edx, dword [0x140042b48]
lea eax, [r9 + 1]
add byte [0x140042b64], al
mov eax, dword [0x140042b38]
add eax, edi
mov dword [rsp + 0x28], ecx
shl eax, cl
shr edx, 2
mov dword [rsp + 0x4c], eax
mov dword [0x140042b4c], eax
movsx eax, dl
or r8d, eax
mov dword [rsp + 0x50], eax
mov eax, dword [0x140042a8c]
test eax, eax
mov dword [rsp + 0x38], edx
mov edx, 0x21a
sete r10b
mov dword [rsp + 0x2c], eax
nop dword [rax]
nop word [rax + rax]
or r12d, r8d
mov dword [0x140042b58], r12d
test bpl, bpl
je 0x140025372
mov eax, 0xffffff26
mov ecx, r9d
shr eax, cl
test eax, eax
mov eax, 1
jne 0x140025374
mov eax, ebx
and byte [0x140042b66], r10b
xor r11b, al
sub rdx, 1
jne 0x140025350
mov byte [0x140042b82], r11b
mov eax, 0x47
mov dword [rsp + 0x44], r12d
xor dil, dil
sub rax, 1
jne 0x140025395
movsx r8d, byte [0x140042b56]
xor r9b, r9b
mov esi, dword [0x140042b28]
mov eax, ebx
mov edx, dword [0x140042b2c]
mov r10d, dword [0x140042b60]
movsx ecx, r15b
shl eax, cl
mov ecx, dword [rsp + 0x2c]
shr eax, 0x1f
shl al, cl
xor ecx, 0xfffffec8
mov dword [rsp + 0x3c], eax
mov byte [0x140042b67], al
movzx eax, byte [0x140042a64]
or al, 0x38
mov dword [rsp + 0x2c], ecx
mov byte [rsp + 0xc8], al
mov byte [0x140042a62], al
mov dword [0x140042a8c], ecx
movzx eax, sil
add eax, dword [0x140042b5c]
sub r10d, eax
mov byte [0x140042b55], bl
mov eax, r8d
shl eax, 0x10
add edx, eax
movzx eax, byte [0x140042b57]
imul ecx, eax, 0x169
mov eax, 0xcccccccd
mov dword [rsp + 0x48], edx
mov dword [0x140042b2c], edx
mul ecx
mov ecx, ebx
shr edx, 2
mov dword [rsp + 0x30], edx
lea eax, [rdx + 0x6d]
and al, sil
and dil, al
mov eax, dword [0x140042b34]
cmp edx, 0x54
mov edx, 0x10
sete cl
xor ecx, 0x193
shr eax, cl
add r8b, al
movzx eax, bpl
sub eax, 0x65
mov byte [0x140042b56], r8b
cmp eax, dword [rsp + 0x28]
mov eax, dword [rsp + 0x24]
sete cl
sub edx, eax
and cl, al
add r14b, 0x65
mov byte [rsp + 0xc0], cl
movzx ecx, byte [rsp + 0x38]
add cl, cl
add cl, 0x69
xor cl, bpl
movzx ebp, byte [rsp + 0xc0]
mov byte [rsp + 0xb0], cl
movzx ecx, r8b
mov r8d, dword [rsp + 0x3c]
movzx esi, byte [rsp + 0xb0]
shl edx, cl
movzx ecx, byte [0x140042b81]
or r14b, 0x7d
mov dword [rsp + 0x40], edx
mov edx, 0x212
mov byte [rsp + 0x20], r14b
nop dword [rax]
nop dword [rax + rax]
cmp r15b, 0x7d
movzx r9d, r9b
movzx eax, bpl
cmovg r9d, ebx
or al, r8b
or r9b, al
xor cl, sil
cmp r10d, 0xab
mov byte [0x140042b80], r9b
mov eax, ebx
sete al
xor eax, dword [rsp + 0x40]
xor r10d, eax
mov eax, ebx
cmp byte [0x140042a63], al
setne al
and r10d, eax
sub rdx, 1
jne 0x1400254e0
movzx eax, byte [0x140042b40]
movsx edx, byte [0x140042b64]
sub al, 0x1b
movzx r8d, byte [0x140042b65]
mov esi, dword [0x140042b38]
movzx ebp, byte [0x140042b54]
mov r15d, dword [rsp + 0x24]
movzx r11d, byte [rsp + 0xc8]
mov r12d, dword [rsp + 0x28]
mov byte [0x140042b81], cl
mov ecx, 0x202
mov byte [rsp + 0xb0], al
mov dword [0x140042b60], r10d
nop dword [rax + rax]
cmp r15d, 0x193
jae 0x1400255b9
movzx eax, r8b
lea r14d, [r11 + 1]
add eax, 0x6d
mov byte [rsp + 0xb8], r14b
lea r13d, [r11 + 0xe]
test eax, 0x193
jne 0x1400255ae
mov eax, ebx
cmp r12d, esi
je 0x1400255b3
mov eax, 1
sub esi, eax
and bpl, 1
mov r10d, dword [0x140042b34]
test edx, edx
je 0x1400255cf
mov eax, 1
test r10b, 0x7d
jne 0x1400255d1
mov eax, ebx
add dil, al
sub rcx, 1
jne 0x140025580
mov r9d, dword [0x140042b30]
movzx r11d, byte [0x140042b82]
movzx r14d, byte [rsp + 0x20]
mov r12d, dword [rsp + 0x44]
mov byte [0x140042b88], dil
mov dword [0x140042b38], esi
mov byte [0x140042b54], bpl
test r9d, r9d
jne 0x140025621
cmp r15d, 0xb4
je 0x140025621
mov r8d, ebx
mov dword [0x140042b40], ebx
jmp 0x14002562e
mov r8d, 1
mov dword [0x140042b40], r8d
movzx ecx, byte [0x140042b57]
xor r10b, 0x2a
movsx edi, byte [rsp + 0xb0]
add ecx, 0xb4
sub edx, edi
movzx eax, r13b
add dword [0x140042b7c], edx
add ecx, eax
movsx eax, r10b
mov edx, 0x19
movzx r10d, byte [0x140042a63]
mov dword [0x140042a64], ecx
imul ecx, eax, 0x19
add r10b, cl
mov byte [0x140042a63], r10b
nop dword [rax]
and r14b, 1
sub rdx, 1
jne 0x140025680
movsx eax, byte [0x140042b66]
mov ecx, ebx
mov ebp, dword [rsp + 0x28]
cmp eax, ebp
mov byte [0x140042a87], r14b
setb cl
cmp ecx, 1
jae 0x14002572e
xor r12b, byte [rsp + 0xb0]
mov ecx, r15d
mov eax, dword [rsp + 0x48]
sub r11b, r12b
mov r12d, dword [rsp + 0x30]
shr eax, cl
mov ecx, ebp
sub r9d, eax
mov byte [0x140042b82], r11b
mov eax, edi
mov dword [0x140042b30], r9d
imul eax, esi
movzx esi, byte [rsp + 0xb8]
cdq
and edx, 3
lea r13d, [rdx + rax]
mov eax, dword [rsp + 0x4c]
add al, byte [rsp + 0xb0]
mov edx, r12d
shl edx, cl
xor r10b, al
xor edx, 0x2a
sar r13d, 2
or dword [0x140042b48], edx
mov ecx, ebx
test sil, sil
mov byte [0x140042a63], r10b
setne cl
xor ecx, dword [0x140042b5c]
sub r8d, ecx
mov dword [0x140042b40], r8d
jmp 0x14002573b
movzx esi, byte [rsp + 0xb8]
mov r12d, dword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov eax, dword [0x140042b60]
mov r14d, dword [rsp + 0x2c]
movzx r8d, byte [0x140042b56]
lea ecx, [r14 + rax*2]
mov eax, 0x2aaaaaab
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*2]
add eax, eax
sub ecx, eax
je 0x1400257e7
sub ecx, 1
je 0x1400257d6
sub ecx, 1
je 0x1400257bb
cmp ecx, 1
jne 0x14002581e
cmp byte [0x140042a62], bl
sete al
or byte [0x140042b83], al
test byte [0x140042b65], r12b
jne 0x1400257ae
mov eax, r14d
xor eax, 0x169
jne 0x1400257ae
cmp byte [0x140042b82], bl
mov eax, ebx
je 0x1400257b3
mov eax, 1
add byte [0x140042b54], al
jmp 0x14002581e
movzx eax, byte [0x140042b64]
movzx ecx, r13b
sar al, cl
mov ecx, dword [rsp + 0x34]
shl al, cl
add byte [0x140042b65], al
jmp 0x14002581e
movzx eax, byte [0x140042a8c]
or al, 0x2a
mov byte [0x140042a86], al
jmp 0x14002581e
cmp dword [0x140042b34], ebx
mov eax, ebx
setne al
or dword [0x140042b28], eax
test r8b, r8b
jne 0x140025813
cmp edi, dword [rsp + 0x34]
je 0x14002580f
movsx eax, byte [0x140042a63]
add eax, 0x7d
jne 0x140025813
mov eax, ebx
jmp 0x140025818
mov eax, 1
or dword [0x140042a64], eax
mov r12d, dword [rsp + 0x50]
mov eax, 0x55555556
imul r12d
mov edi, r12d
mov byte [0x140042b66], bl
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx*2]
mov edx, dword [0x140042b48]
sub edi, eax
add edi, edx
cmp dword [0x140042b78], ebx
sete al
or r8b, al
mov byte [0x140042b56], r8b
test bl, bl
jne 0x140025876
movzx eax, byte [0x140042b83]
movsx ecx, sil
sub ecx, 0xb4
cmp ecx, eax
mov eax, ebx
je 0x14002587b
mov eax, 1
or edx, eax
mov dword [0x140042b48], edx
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
movzx eax, byte [0x140042b83]
mov ecx, edi
movzx edx, byte [0x140042a86]
add al, r13b
add al, sil
shl al, cl
mov ecx, dword [0x140042b28]
shl al, cl
mov ecx, 0x94
nop
or dl, al
sub rcx, 1
jne 0x1400258b0
sar r14d, 0x1f
cmp dword [0x140042b58], r14d
sete byte [0x140042b54]
cmp dword [0x140042b40], ebx
jne 0x1400258da
lea eax, [r12 + rbp]
test eax, eax
je 0x1400258df
mov ebx, 1
sub byte [0x140042a62], bl
cmp byte [0x140042b65], 0
jne 0x1400258fd
lea eax, [r15 + 0x54]
mov byte [0x140042a86], 0
test eax, eax
je 0x140025904
mov byte [0x140042a86], 1
call fcn.140024600
mov eax, dword [rsp + 0x38]
or al, 0x92
movsx eax, al
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret