Function at 0x54faa0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov rbx, r9
mov qword [rsp + 0xf0], rcx
mov rcx, r9
mov r12, rdx
mov rbp, r8
call fcn.004df790
mov rcx, rbx
call fcn.004df920
test rax, rax
mov rsi, rax
je 0x54fbd0
mov rcx, rbx
call fcn.004df920
test rax, rax
mov rdi, rax
je 0x54fbd0
mov rcx, rbx
call fcn.004df920
test rax, rax
mov r15, rax
je 0x54fbd0
mov rcx, rbx
call fcn.004df920
test rax, rax
mov qword [rsp + 0x40], rax
je 0x54fbd0
mov eax, dword [rbp + 8]
test eax, eax
je 0x54fba6
sub eax, 1
js 0x550213
movsxd r11, eax
mov eax, eax
mov r14, qword [rbp]
lea r13, [r11 - 1]
mov qword [rsp + 0x108], rbx
mov rcx, r13
sub rcx, rax
mov rax, rcx
xor ecx, ecx
mov rbx, rax
mov r8, qword [r14 + r11*8]
test r8, r8
je 0x54fb98
shl r11d, 6
mov eax, 0x3f
movabs rdx, 0x8000000000000000
test r8, rdx
je 0x54fb8d
cmp ecx, 5
jg 0x54fb8a
lea r10d, [rax + r11]
movsxd r9, ecx
mov dword [rsp + r9*4 + 0x80], r10d
add ecx, 1
sub eax, 1
shr rdx, 1
cmp eax, 0xffffffff
jne 0x54fb71
cmp r13, rbx
mov r11, r13
je 0x54fbf2
sub r13, 1
jmp 0x54fb55
lea r9, str.bn_gf2m.c
mov dword [rsp + 0x20], 0x176
mov r8d, 0x6a
mov edx, 0x83
mov ecx, 3
call fcn.00498ab0
nop word [rax + rax]
xor r13d, r13d
mov rcx, rbx
call fcn.004df890
mov eax, r13d
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp ecx, 5
mov rbx, qword [rsp + 0x108]
jle 0x5500aa
cmp ecx, 6
jg 0x54fba6
mov r10d, dword [rsp + 0x80]
test r10d, r10d
je 0x5501df
cmp r15, r12
je 0x54fce4
mov edx, dword [r12 + 8]
cmp edx, dword [r15 + 0xc]
jg 0x5501f5
test edx, edx
jle 0x54fce0
mov r10, qword [r15]
mov r9, qword [r12]
lea rax, [r10 + 0x10]
cmp r9, rax
lea rax, [r9 + 0x10]
setae cl
cmp r10, rax
setae al
or cl, al
je 0x550220
cmp edx, 0x18
jbe 0x550220
mov rax, r9
xor r14d, r14d
shr rax, 3
and eax, 1
je 0x54fc80
mov rcx, qword [r9]
mov r14d, 1
mov qword [r10], rcx
mov r13d, edx
mov r8d, eax
xor ecx, ecx
sub r13d, eax
shl r8, 3
xor eax, eax
mov r12d, r13d
lea r11, [r9 + r8]
add r8, r10
shr r12d, 1
movdqa xmm0, xmmword [r11 + rax]
add ecx, 1
movups xmmword [r8 + rax], xmm0
add rax, 0x10
cmp r12d, ecx
ja 0x54fc9e
mov ecx, r13d
and ecx, 0xfffffffe
cmp r13d, ecx
lea eax, [rcx + r14]
je 0x54fce0
movsxd rcx, eax
add eax, 1
mov r8, qword [r9 + rcx*8]
cmp eax, edx
mov qword [r10 + rcx*8], r8
jge 0x54fce0
cdqe
mov rcx, qword [r9 + rax*8]
mov qword [r10 + rax*8], rcx
mov dword [r15 + 8], edx
lea rdx, [rsp + 0x80]
mov rcx, r15
call fcn.0054e7d0
test eax, eax
je 0x54fbd0
mov r9d, dword [r15 + 8]
test r9d, r9d
je 0x54fbd0
mov r14, qword [rsp + 0x40]
mov rdx, rbp
mov rcx, r14
call fcn.004abfe0
test rax, rax
je 0x54fbd0
mov rcx, r15
call fcn.004ab7a0
mov rcx, r14
mov dword [rsp + 0x6c], eax
call fcn.004ab7a0
mov dword [rsp + 0x48], eax
mov eax, dword [rbp + 8]
cmp dword [r15 + 0xc], eax
mov dword [rsp + 0x3c], eax
jge 0x54fd51
mov edx, eax
mov rcx, r15
call fcn.004abc80
movsxd rax, dword [r15 + 8]
mov r12, qword [r15]
cmp dword [rsp + 0x3c], eax
jle 0x550268
mov ecx, dword [rsp + 0x3c]
sub ecx, 1
mov edx, ecx
mov dword [rsp + 0x4c], ecx
lea rcx, [r12 + rax*8]
sub edx, eax
lea r8, [rdx*8 + 8]
xor edx, edx
call fcn.005999d0
mov eax, dword [rsp + 0x3c]
cmp dword [rsi + 0xc], eax
mov dword [r15 + 8], eax
jge 0x54fd9b
mov edx, eax
mov rcx, rsi
call fcn.004abc80
cmp dword [rsp + 0x3c], 1
mov r13, qword [rsi]
mov eax, dword [rsp + 0x3c]
mov qword [r13], 1
jle 0x55025c
sub eax, 2
lea rcx, [r13 + 8]
xor edx, edx
lea r8, [rax*8 + 8]
mov dword [rsp + 0x68], eax
call fcn.005999d0
mov eax, dword [rsp + 0x3c]
cmp dword [rdi + 0xc], eax
mov dword [rsi + 8], eax
jge 0x54fde5
mov edx, eax
mov rcx, rdi
call fcn.004abc80
mov r8d, dword [rsp + 0x3c]
mov rcx, qword [rdi]
test r8d, r8d
mov qword [rsp + 0x70], rcx
jle 0x54fe0a
mov eax, dword [rsp + 0x4c]
xor edx, edx
lea r8, [rax*8 + 8]
call fcn.005999d0
mov eax, dword [rsp + 0x3c]
mov qword [rsp + 0x100], rbp
mov qword [rsp + 0x108], rbx
mov ebp, dword [rsp + 0x6c]
mov rbx, qword [rsp + 0x70]
mov qword [rsp + 0x50], rdi
mov dword [rdi + 8], eax
mov rax, qword [rsp + 0x40]
mov r14, qword [rax]
mov eax, dword [rsp + 0x4c]
mov rcx, rax
lea rax, [rax*8 + 8]
mov qword [rsp + 0x78], rax
mov eax, dword [rsp + 0x68]
lea rax, [rax*8 + 0x10]
mov qword [rsp + 0x58], rax
movsxd rax, ecx
shl rax, 3
mov qword [rsp + 0x60], rax
nop dword [rax + rax]
test ebp, ebp
mov rax, qword [r12]
je 0x5500c0
test al, 1
je 0x550116
cmp ebp, 0x40
jle 0x5500c0
mov edi, dword [rsp + 0x48]
cmp ebp, edi
jge 0x54fec3
mov eax, ebp
mov r12, r14
mov r14, qword [r15]
mov dword [rsp + 0x48], eax
mov rax, r15
mov r15, qword [rsp + 0x40]
mov qword [rsp + 0x40], rax
mov rax, rsi
mov r13, rbx
mov ebp, edi
mov rbx, qword [rsi]
mov rsi, qword [rsp + 0x50]
mov qword [rsp + 0x50], rax
mov edi, dword [rsp + 0x3c]
test edi, edi
jle 0x550023
lea r9, [r14 + 0x10]
lea rdx, [r12 + 0x10]
lea r8, [r13 + 0x10]
lea r10, [rbx + 0x10]
cmp r9, r12
setbe cl
cmp r14, rdx
setae al
or ecx, eax
cmp r13, rdx
setae al
cmp r8, r12
setbe r11b
or eax, r11d
and ecx, eax
cmp edi, 9
seta al
and ecx, eax
cmp r12, r10
setae al
cmp rbx, rdx
setae dl
or eax, edx
and ecx, eax
cmp r9, r13
setbe al
cmp r8, r14
setbe dl
or eax, edx
test cl, al
je 0x5501b5
cmp r13, r10
setae dl
cmp r8, rbx
setbe al
or dl, al
je 0x5501b5
mov rax, r12
shr rax, 3
and eax, 1
cmp eax, 1
sbb edx, edx
xor r10d, r10d
add edx, 2
cmp edx, dword [rsp + 0x4c]
ja 0x54ffe0
test eax, eax
je 0x54ff79
mov rdx, qword [r14]
xor qword [r12], rdx
mov r10d, 1
mov rdx, qword [rbx]
xor qword [r13], rdx
mov edx, eax
sub edi, eax
xor ecx, ecx
shl rdx, 3
mov dword [rsp + 0x68], edi
xor eax, eax
lea r9, [r12 + rdx]
lea r11, [r14 + rdx]
lea r8, [r13 + rdx]
shr edi, 1
add rdx, rbx
nop dword [rax + rax]
movdqu xmm0, xmmword [r11 + rax]
add ecx, 1
pxor xmm0, xmmword [r9 + rax]
movaps xmmword [r9 + rax], xmm0
movdqu xmm0, xmmword [rdx + rax]
movdqu xmm1, xmmword [r8 + rax]
pxor xmm0, xmm1
movups xmmword [r8 + rax], xmm0
add rax, 0x10
cmp edi, ecx
ja 0x54ffa0
mov edi, dword [rsp + 0x68]
mov eax, edi
and eax, 0xfffffffe
add r10d, eax
cmp eax, edi
je 0x550023
movsxd rdx, r10d
add r10d, 1
lea rax, [rdx*8]
mov rcx, qword [r14 + rdx*8]
xor qword [r12 + rax], rcx
mov rdx, qword [rbx + rdx*8]
xor qword [r13 + rax], rdx
cmp r10d, dword [rsp + 0x3c]
jge 0x550023
movsxd rax, r10d
lea rdx, [rax*8]
mov rcx, qword [r14 + rax*8]
xor qword [r12 + rdx], rcx
mov rax, qword [rbx + rax*8]
xor qword [r13 + rdx], rax
cmp ebp, dword [rsp + 0x48]
jne 0x54fe70
mov edi, dword [rsp + 0x48]
lea eax, [rdi + 0x3e]
sub edi, 1
cmovns eax, edi
sar eax, 6
movsxd rcx, eax
mov ebp, eax
lea rdx, [rcx*8]
mov rcx, qword [r12 + rcx*8]
test rcx, rcx
jne 0x550254
test eax, eax
je 0x55009e
lea ecx, [rax - 1]
movsxd rax, ecx
mov ecx, ecx
lea r9, [rax - 1]
sub r9, rcx
mov rcx, rax
neg rcx
lea r8, [rdx + rcx*8]
add r8, r12
jmp 0x55008d
sub rax, 1
cmp rax, r9
je 0x5501ee
mov rcx, qword [r8 + rax*8 - 8]
mov edx, eax
test rcx, rcx
je 0x550080
shl edx, 6
mov ebp, edx
call fcn.004ab680
add ebp, eax
jmp 0x54fe70
movsxd rcx, ecx
lea rax, [rsp + rcx*4 + 0x80]
mov dword [rax], 0xffffffff
jmp 0x54fc08
cmp rax, 1
jne 0x54fe8d
mov eax, dword [rsi + 8]
mov rbx, qword [rsp + 0x108]
test eax, eax
jle 0x5500f7
mov rcx, qword [rsi]
movsxd rdx, eax
lea rdx, [rcx + rdx*8 - 8]
sub rdx, 8
cmp qword [rdx + 8], 0
jne 0x5500f4
sub eax, 1
jne 0x5500e4
mov dword [rsi + 8], eax
mov rcx, qword [rsp + 0xf0]
mov rdx, rsi
xor r13d, r13d
call fcn.004abfe0
test rax, rax
setne r13b
jmp 0x54fbd3
mov rdi, qword [rsp + 0x100]
mov rdx, qword [r13]
mov r11, qword [rdi]
mov r10, rdx
and r10d, 1
neg r10
mov rcx, qword [r11]
and rcx, r10
xor rcx, rdx
mov edx, dword [rsp + 0x4c]
test edx, edx
jle 0x550243
mov rdi, qword [rsp + 0x58]
mov r8d, 8
nop
mov r9, qword [r12 + r8]
shr rax, 1
shr rcx, 1
mov rdx, r9
shl rdx, 0x3f
or rax, rdx
mov qword [r12 + r8 - 8], rax
mov rdx, qword [r11 + r8]
and rdx, r10
xor rdx, qword [r13 + r8]
mov rax, rdx
shl rax, 0x3f
or rcx, rax
mov rax, r9
mov qword [r13 + r8 - 8], rcx
add r8, 8
mov rcx, rdx
cmp r8, rdi
jne 0x550150
mov rax, qword [rsp + 0x60]
lea r10, [r12 + rax]
lea r8, [r13 + rax]
shr r9, 1
shr rdx, 1
sub ebp, 1
mov qword [r10], r9
mov qword [r8], rdx
jmp 0x54fe70
mov rcx, qword [rsp + 0x78]
xor eax, eax
nop dword [rax]
mov rdx, qword [r14 + rax]
xor qword [r12 + rax], rdx
mov rdx, qword [rbx + rax]
xor qword [r13 + rax], rdx
add rax, 8
cmp rax, rcx
jne 0x5501c0
jmp 0x550023
xor edx, edx
mov rcx, r15
call fcn.004ac1b0
jmp 0x54fcfc
xor ebp, ebp
jmp 0x55009e
mov rcx, r15
xor r13d, r13d
call fcn.004abc80
test rax, rax
je 0x54fbd3
mov edx, dword [r12 + 8]
jmp 0x54fc31
lea rax, [rsp + 0x80]
jmp 0x5500b5
lea eax, [rdx - 1]
lea rcx, [rax*8 + 8]
xor eax, eax
mov r8, qword [r9 + rax]
mov qword [r10 + rax], r8
add rax, 8
cmp rax, rcx
jne 0x55022d
jmp 0x54fce0
mov r8, r13
mov r10, r12
mov rdx, rcx
mov r9, rax
jmp 0x5501a1
shl ebp, 6
jmp 0x55009e
sub eax, 2
mov dword [rsp + 0x68], eax
jmp 0x54fdcf
mov eax, dword [rsp + 0x3c]
sub eax, 1
mov dword [rsp + 0x4c], eax
jmp 0x54fd84