Function at 0x5f3f80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rsi, qword [rcx + 0x178]
mov rdi, qword [rcx + 0x180]
mov r15, rcx
mov r12, r8
xor ecx, ecx
mov qword [rsp + 0x98], rdx
movabs r8, 0xfffffffe0
mov rdx, r9
add rdx, qword [r15 + 0x38]
mov qword [rsp + 0xa8], r9
setb cl
cmp rdx, r8
ja 0x5f4610
test rcx, rcx
jne 0x5f4610
mov eax, dword [r15 + 0x174]
mov qword [r15 + 0x38], rdx
test eax, eax
jne 0x5f4517
mov r9d, dword [r15 + 0x170]
mov edx, dword [r15 + 0xc]
mov eax, r9d
bswap edx
mov dword [rsp + 0x20], edx
and eax, 0xf
je 0x5f45f7
cmp qword [rsp + 0xa8], 0
je 0x5f45ca
mov r8, qword [rsp + 0x98]
mov r10, qword [rsp + 0xa8]
jmp 0x5f4036
test r10, r10
je 0x5f45ae
mov ecx, eax
movzx edx, byte [r8]
add r12, 1
add eax, 1
xor dl, byte [r15 + rcx + 0x10]
mov ecx, r9d
add r8, 1
add r9d, 1
mov byte [r12 - 1], dl
sub r10, 1
mov byte [r15 + rcx + 0x188], dl
and eax, 0xf
jne 0x5f402d
mov dword [rsp + 0x24], eax
mov qword [rsp + 0x98], r8
mov qword [rsp + 0xa8], r10
lea rdx, [r15 + 0x60]
lea rcx, [r15 + 0x40]
lea r8, [r15 + 0x188]
call sym.gcm_ghash_4bit
cmp qword [rsp + 0xa8], 0xbff
jbe 0x5f418a
lea rax, [r15 + 0x60]
mov qword [rsp + 0x30], rax
lea rax, [r15 + 0x40]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x28], r12
lea rbx, [r12 + 0xc00]
lea rbp, [r15 + 0x10]
mov r12, r15
mov r13d, dword [rsp + 0x20]
mov r15, qword [rsp + 0x98]
mov r14, qword [rsp + 0x28]
nop dword [rax + rax]
add r13d, 1
mov r8, rdi
mov rdx, rbp
mov rcx, r12
call rsi
mov eax, r13d
add r14, 0x10
add r15, 0x10
bswap eax
mov dword [r12 + 0xc], eax
mov rax, qword [r15 - 0x10]
xor rax, qword [r12 + 0x10]
mov qword [r14 - 0x10], rax
mov rax, qword [r15 - 8]
xor rax, qword [r12 + 0x18]
mov qword [r14 - 8], rax
cmp r14, rbx
jne 0x5f40e0
mov rbx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x30]
mov r9d, 0xc00
mov rcx, qword [rsp + 0x38]
add dword [rsp + 0x20], 0xc0
add qword [rsp + 0x98], 0xc00
mov r8, rbx
call sym.gcm_ghash_4bit
mov rax, rbx
lea rbx, [r14 + 0xc00]
sub qword [rsp + 0xa8], 0xc00
add rax, 0xc00
cmp qword [rsp + 0xa8], 0xbff
mov qword [rsp + 0x28], rax
ja 0x5f40c9
mov r15, r12
mov r12, r14
mov r9, qword [rsp + 0xa8]
and r9, 0xfffffffffffffff0
je 0x5f4273
lea rax, [r15 + 0x60]
mov qword [rsp + 0x30], rax
lea rax, [r15 + 0x40]
mov qword [rsp + 0x38], rax
mov ebp, dword [rsp + 0x20]
mov r13, r12
lea rdx, [r15 + 0x10]
mov r14, r9
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa0], r12
add ebp, 1
mov rbx, qword [rsp + 0x98]
lea r11, [rax - 0x10]
shr r11, 4
lea eax, [rbp + r11]
mov r12, r11
mov dword [rsp + 0x20], eax
jmp 0x5f41f5
mov rdx, qword [rsp + 0x28]
add ebp, 1
mov qword [rsp + 0x28], rdx
mov r8, rdi
mov rcx, r15
add r13, 0x10
call rsi
mov eax, ebp
add rbx, 0x10
bswap eax
mov dword [r15 + 0xc], eax
mov rax, qword [rbx - 0x10]
xor rax, qword [r15 + 0x10]
mov qword [r13 - 0x10], rax
mov rax, qword [rbx - 8]
xor rax, qword [r15 + 0x18]
mov qword [r13 - 8], rax
cmp ebp, dword [rsp + 0x20]
jne 0x5f41ed
mov r11, r12
mov rcx, qword [rsp + 0x38]
mov r9, r14
mov dword [rsp + 0x20], ebp
mov r12, qword [rsp + 0xa0]
lea rdx, [r11 + 1]
and qword [rsp + 0xa8], 0xf
shl rdx, 4
add qword [rsp + 0x98], rdx
add r12, rdx
mov rdx, qword [rsp + 0x30]
mov r8, r12
sub r8, r14
call sym.gcm_ghash_4bit
cmp qword [rsp + 0xa8], 0
je 0x5f44f9
lea rdx, [r15 + 0x10]
mov r8, rdi
mov rcx, r15
call rsi
mov edx, dword [rsp + 0x20]
mov rax, qword [rsp + 0x98]
mov r8d, dword [rsp + 0x24]
add edx, 1
bswap edx
mov dword [r15 + 0xc], edx
movzx edx, byte [r15 + 0x10]
lea ecx, [r8 + 1]
xor dl, byte [rax]
mov rax, r8
mov byte [r12], dl
mov byte [r15 + r8 + 0x188], dl
mov r8, qword [rsp + 0xa8]
sub r8, 1
je 0x5f44f1
mov rbx, qword [rsp + 0x98]
movzx edx, byte [r15 + 0x11]
mov r9d, ecx
lea r11d, [rax + 2]
xor dl, byte [rbx + 1]
cmp qword [rsp + 0xa8], 2
mov byte [r12 + 1], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [r15 + 0x12]
xor dl, byte [rbx + 2]
lea r9d, [rax + 3]
cmp qword [rsp + 0xa8], 3
mov byte [r12 + 2], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [r15 + 0x13]
xor dl, byte [rbx + 3]
lea r11d, [rax + 4]
cmp qword [rsp + 0xa8], 4
mov byte [r12 + 3], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [r15 + 0x14]
xor dl, byte [rbx + 4]
lea r9d, [rax + 5]
cmp qword [rsp + 0xa8], 5
mov byte [r12 + 4], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 5]
xor dl, byte [r15 + 0x15]
lea r11d, [rax + 6]
cmp qword [rsp + 0xa8], 6
mov byte [r12 + 5], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 6]
xor dl, byte [r15 + 0x16]
lea r9d, [rax + 7]
cmp qword [rsp + 0xa8], 7
mov byte [r12 + 6], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 7]
xor dl, byte [r15 + 0x17]
lea r11d, [rax + 8]
cmp qword [rsp + 0xa8], 8
mov byte [r12 + 7], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 8]
xor dl, byte [r15 + 0x18]
lea r9d, [rax + 9]
cmp qword [rsp + 0xa8], 9
mov byte [r12 + 8], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 9]
xor dl, byte [r15 + 0x19]
lea r11d, [rax + 0xa]
cmp qword [rsp + 0xa8], 0xa
mov byte [r12 + 9], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 0xa]
xor dl, byte [r15 + 0x1a]
lea r9d, [rax + 0xb]
cmp qword [rsp + 0xa8], 0xb
mov byte [r12 + 0xa], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 0xb]
xor dl, byte [r15 + 0x1b]
lea r11d, [rax + 0xc]
cmp qword [rsp + 0xa8], 0xc
mov byte [r12 + 0xb], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 0xc]
xor dl, byte [r15 + 0x1c]
lea r9d, [rax + 0xd]
cmp qword [rsp + 0xa8], 0xd
mov byte [r12 + 0xc], dl
mov byte [r15 + r11 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 0xd]
add eax, 0xe
xor dl, byte [r15 + 0x1d]
cmp qword [rsp + 0xa8], 0xe
mov byte [r12 + 0xd], dl
mov byte [r15 + r9 + 0x188], dl
je 0x5f44f1
movzx edx, byte [rbx + 0xe]
mov eax, eax
xor dl, byte [r15 + 0x1e]
mov byte [r12 + 0xe], dl
mov byte [r15 + rax + 0x188], dl
lea eax, [rcx + r8]
mov dword [rsp + 0x24], eax
mov eax, dword [rsp + 0x24]
mov dword [r15 + 0x170], eax
xor eax, eax
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test r9, r9
je 0x5f45d8
movdqu xmm1, xmmword [r15 + 0x40]
mov edx, dword [r15 + 0xc]
pxor xmm0, xmm0
mov dword [r15 + 0x174], 0
mov dword [rsp + 0x24], 0x10
bswap edx
movups xmmword [r15 + 0x188], xmm1
mov dword [rsp + 0x20], edx
mov edx, 1
movups xmmword [r15 + 0x40], xmm0
cmp qword [rsp + 0xa8], 0xf
jbe 0x5f4091
test dl, dl
je 0x5f4091
mov r9d, dword [rsp + 0x24]
lea rdx, [r15 + 0x60]
lea rcx, [r15 + 0x40]
lea r8, [r15 + 0x188]
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x38], rcx
call sym.gcm_ghash_4bit
cmp qword [rsp + 0xa8], 0xbff
jbe 0x5f461a
mov dword [rsp + 0x24], 0
jmp 0x5f40b5
mov dword [rsp + 0x24], eax
mov qword [rsp + 0x98], r8
mov qword [rsp + 0xa8], r10
test eax, eax
je 0x5f407d
mov dword [r15 + 0x170], r9d
xor eax, eax
jmp 0x5f4506
lea rdx, [r15 + 0x60]
lea rcx, [r15 + 0x40]
call sym.gcm_gmult_4bit
xor eax, eax
mov dword [r15 + 0x174], 0
jmp 0x5f4506
test r9d, r9d
mov dword [rsp + 0x24], r9d
setne dl
jmp 0x5f4559
mov eax, 0xffffffff
jmp 0x5f4506
mov r9, qword [rsp + 0xa8]
mov dword [rsp + 0x24], 0
and r9, 0xfffffffffffffff0
jmp 0x5f41ae