Function at 0x43b1e0
Capabilities:
Encode data using xor

Disassembly:
push r13
push r12
push rsi
push rbx
sub rsp, 0x38
xor eax, eax
cmp dword [rcx + 0x88], 0xffffffff
mov rbx, rcx
mov r12, rdx
mov rsi, r8
je 0x43b46b
mov rcx, qword [rcx]
call sym.EVP_CIPHER_CTX_block_size
movsxd r13, eax
mov qword [rsi], r13
mov r9, r13
test r12, r12
je 0x43b466
mov eax, dword [rbx + 0x88]
cmp r13d, eax
je 0x43b480
mov r8d, r13d
movsxd rdx, eax
sub r8d, eax
mov byte [rbx + rdx + 0x68], pe_nt_image_headers64
cmp r8d, 1
jle 0x43b25c
sub r8d, 1
lea rcx, [rbx + rdx + 0x69]
xor edx, edx
mov dword [rsp + 0x2c], r13d
movsxd r8, r8d
call sym.memset
mov r9d, dword [rsp + 0x2c]
test r9d, r9d
jle 0x43b450
lea rcx, [r12 + 0x10]
lea rdx, [rbx + 0x28]
cmp rcx, rdx
lea rdx, [rbx + 0x78]
lea eax, [r9 - 1]
setbe cl
cmp r12, rdx
setae dl
or cl, dl
je 0x43b6f0
cmp eax, 0xe
jbe 0x43b6f0
movdqu xmm0, xmmword [rbx + 0x68]
movdqu xmm1, xmmword [rbx + 0x28]
mov eax, r9d
shr eax, 4
pxor xmm0, xmm1
movups xmmword [r12], xmm0
cmp eax, 1
jne 0x43b6a8
mov eax, r9d
and eax, 0xfffffff0
test r9b, 0xf
je 0x43b450
movsxd r8, eax
mov edx, eax
movzx ecx, byte [rbx + r8 + 0x68]
xor cl, byte [rbx + r8 + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 1]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 2]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 3]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 4]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 5]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 6]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 7]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 8]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 9]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 0xa]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 0xb]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 0xc]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
lea edx, [rax + 0xd]
cmp r9d, edx
jle 0x43b450
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [rbx + rdx + 0x68]
xor cl, byte [rbx + rdx + 0x28]
mov byte [r12 + rdx], cl
cmp r9d, eax
jle 0x43b450
cdqe
movzx edx, byte [rbx + rax + 0x68]
xor dl, byte [rbx + rax + 0x28]
mov byte [r12 + rax], dl
nop dword [rax]
mov rcx, qword [rbx]
mov r8, r12
mov rdx, r12
call sym.EVP_Cipher
test eax, eax
je 0x43b6c8
mov eax, 1
add rsp, 0x38
pop rbx
pop rsi
pop r12
pop r13
ret
test r13d, r13d
jle 0x43b450
lea r8, [rbx + 8]
lea rcx, [r12 + 0x10]
cmp r8, rcx
lea rcx, [rbx + 0x78]
lea edx, [r13 - 1]
setae r8b
cmp r12, rcx
setae cl
or r8b, cl
je 0x43b720
cmp edx, 0xe
jbe 0x43b720
movdqu xmm0, xmmword [rbx + 0x68]
movdqu xmm2, xmmword [rbx + 8]
mov edx, r13d
shr edx, 4
pxor xmm0, xmm2
movups xmmword [r12], xmm0
cmp edx, 1
je 0x43b4e7
movdqu xmm0, xmmword [rbx + 0x78]
movdqu xmm4, xmmword [rbx + 0x18]
pxor xmm0, xmm4
movups xmmword [r12 + 0x10], xmm0
mov edx, r9d
and edx, 0xfffffff0
test r9b, 0xf
je 0x43b450
movsxd r10, edx
mov ecx, edx
movzx r8d, byte [rbx + r10 + 0x68]
xor r8b, byte [rbx + r10 + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 1]
cmp ecx, eax
jge 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 2]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 3]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 4]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 5]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 6]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 7]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 8]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 9]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 0xa]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 0xb]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 0xc]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
lea ecx, [rdx + 0xd]
cmp eax, ecx
jle 0x43b450
movsxd rcx, ecx
add edx, 0xe
movzx r8d, byte [rbx + rcx + 0x68]
xor r8b, byte [rbx + rcx + 8]
mov byte [r12 + rcx], r8b
cmp eax, edx
jle 0x43b450
movsxd rax, edx
movzx edx, byte [rbx + rax + 0x68]
xor dl, byte [rbx + rax + 8]
mov byte [r12 + rax], dl
jmp 0x43b450
movdqu xmm0, xmmword [rbx + 0x78]
movdqu xmm3, xmmword [rbx + 0x38]
pxor xmm0, xmm3
movups xmmword [r12 + 0x10], xmm0
jmp 0x43b2b5
mov rdx, r13
mov rcx, r12
mov dword [rsp + 0x2c], eax
call sym.OPENSSL_cleanse
mov eax, dword [rsp + 0x2c]
add rsp, 0x38
pop rbx
pop rsi
pop r12
pop r13
ret
mov ecx, eax
xor eax, eax
nop dword [rax]
movzx edx, byte [rbx + rax + 0x68]
xor dl, byte [rbx + rax + 0x28]
mov byte [r12 + rax], dl
mov rdx, rax
add rax, 1
cmp rdx, rcx
jne 0x43b6f8
jmp 0x43b450
mov ecx, edx
xor eax, eax
nop dword [rax]
movzx edx, byte [rbx + rax + 8]
xor dl, byte [rbx + rax + 0x68]
mov byte [r12 + rax], dl
mov rdx, rax
add rax, 1
cmp rcx, rdx
jne 0x43b728
jmp 0x43b450