Function at 0x6f588e60
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xf8
mov eax, dword [rcx + 4]
mov qword [rsp + 0x158], r9
mov qword [rsp + 0x140], rcx
mov r9d, r8d
add r9, qword [rcx + 0xa0]
bswap r9
mov edi, eax
mov qword [rsp + 0x64], r9
or edi, r8d
je 0x6f588ec1
cmp eax, 3
jbe 0x6f589941
test r8d, r8d
jne 0x6f589941
mov r8d, 0x10
lea rdx, [rsp + rax + 0x60]
sub r8, rax
jmp 0x6f588ecc
lea rdx, [rsp + 0x64]
mov r8d, 0xc
mov rcx, qword [rsp + 0x140]
lea r15, [rsp + 0x70]
mov r14d, 0xa
call dbg.fugue2_core
mov rax, qword [rsp + 0x140]
mov rdi, qword [rsp + 0x140]
mov rcx, r15
mov eax, dword [rax + 8]
add rdi, 0xc
lea esi, [rax + rax*2]
lea eax, [rsi + rsi]
lea rbx, [rax*4]
mov rsi, rax
neg rax
lea rdx, [rdi + rax*4 + 0x78]
mov r8, rbx
call sym.memcpy
mov r8d, 0x1e
lea rcx, [r15 + rbx]
mov rdx, rdi
sub r8d, esi
shl r8, 2
call sym.memcpy
lea rax, [r15 + 0xc]
mov dword [rsp + 0x40], r14d
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x28], rax
nop dword [rax + rax]
mov edi, dword [rsp + 0xdc]
mov rdx, qword [rsp + 0x30]
mov r8d, 0x6c
mov rcx, qword [rsp + 0x28]
mov ebx, dword [rsp + 0xe0]
lea r15, [0x6f7339c0]
mov esi, dword [rsp + 0xe4]
call sym.memmove
mov eax, edi
mov edi, dword [rsp + 0x88]
mov r14d, dword [rsp + 0x80]
mov r12d, dword [rsp + 0x84]
lea r9, [0x6f7335c0]
mov r13d, dword [rsp + 0xac]
xor esi, edi
xor edi, dword [rsp + 0xb4]
xor eax, r14d
mov edx, eax
mov r10d, esi
lea rsi, [0x6f7331c0]
shr edx, 0x10
movzx r8d, al
xor ebx, r12d
movzx edx, dl
mov r11d, dword [rsi + r8*4]
movzx ebp, bh
mov dword [rsp + 0x38], edi
mov dword [rsp + 0xb4], edi
lea rdi, [0x6f733dc0]
mov ecx, dword [r15 + rdx*4]
movzx edx, ah
shr eax, 0x18
mov esi, dword [rdi + rax*4]
mov ebp, dword [r9 + rbp*4]
mov eax, ebx
mov edx, dword [r9 + rdx*4]
shr eax, 0x18
movzx r8d, bl
mov eax, dword [rdi + rax*4]
shr ebx, 0x10
xor r12d, dword [rsp + 0xb0]
xor esi, r11d
movzx r9d, bl
xor r13d, r14d
xor esi, ecx
mov dword [rsp + 0xac], r13d
xor esi, edx
xor edx, ebp
mov ebx, eax
mov dword [rsp + 0x24], edx
lea rdx, [0x6f7331c0]
mov dword [rsp + 0xb0], r12d
mov r8d, dword [rdx + r8*4]
xor ebx, r8d
xor ebx, dword [r15 + r9*4]
xor r8d, r11d
mov r11d, r10d
shr r11d, 0x18
mov r9d, r11d
xor ebx, ebp
mov ebp, r10d
mov r11d, dword [rdi + r9*4]
shr ebp, 0x10
movzx r9d, bpl
mov r15d, dword [r15 + r9*4]
movzx r9d, r10b
xor eax, r11d
mov ebp, dword [rdx + r9*4]
mov edx, r10d
movzx edx, dh
mov r10, rdx
lea rdx, [0x6f7335c0]
xor ecx, r15d
xor r8d, ebp
xor r11d, ebp
mov ebp, dword [rsp + 0x7c]
xor r11d, r15d
xor r11d, dword [rdx + r10*4]
lea r15, [0x6f7339c0]
mov r10d, ebp
mov edx, ebp
shr r10d, 0x18
movzx edx, dh
mov r9d, r11d
mov r11d, dword [rdi + r10*4]
mov r10d, ebp
shr r10d, 0x10
lea rdi, [0x6f7331c0]
movzx ebp, bpl
movzx r10d, r10b
mov r10d, dword [r15 + r10*4]
mov r15, rdx
lea rdx, [0x6f7335c0]
xor eax, r11d
mov r15d, dword [rdx + r15*4]
mov edx, dword [rsp + 0x24]
xor ecx, r10d
xor edx, r15d
xor r11d, dword [rdi + rbp*4]
mov ebp, esi
xor ebp, eax
and ebp, 0xff000000
xor r10d, r11d
mov r11d, ebx
xor r11d, ecx
xor r10d, r15d
mov r15d, r8d
and r11d, 0xff0000
shr r15d, 0x18
or ebp, r11d
mov r11d, r8d
xor r15d, esi
xor r11d, r10d
movzx r15d, r15b
movzx r11d, r11b
or ebp, r11d
mov r11d, r9d
xor r11d, edx
and r11d, 0xff00
or ebp, r11d
mov r11d, eax
shl r11d, 8
mov dword [rsp + 0x70], ebp
xor r11d, ebx
and r11d, 0xff000000
or r11d, r15d
mov r15d, ecx
shl r15d, 8
xor r15d, r9d
and r15d, 0xff0000
or r11d, r15d
mov r15d, edx
shl r15d, 8
xor r15d, r10d
and r15d, 0xff00
or r11d, r15d
mov r15d, r8d
mov dword [rsp + 0x74], r11d
mov r11d, eax
shr r15d, 0x10
shl r11d, 0x10
xor r15d, ebx
xor r11d, r9d
movzx r15d, r15b
and r11d, 0xff000000
or r11d, r15d
mov r15d, ecx
shl eax, 0x18
shl r15d, 0x10
shr r8d, 8
xor eax, r10d
xor r15d, r10d
xor r9d, r8d
shr ecx, 8
and r15d, 0xff0000
and eax, 0xff000000
movzx r9d, r9b
or r11d, r15d
mov r15d, edx
shr edx, 8
shr r15d, 0x10
or eax, r9d
xor ebx, edx
xor r15d, esi
xor esi, ecx
and ebx, 0xff00
and esi, 0xff0000
and r15d, 0xff00
or eax, esi
or r11d, r15d
or ebx, eax
mov dword [rsp + 0x78], r11d
mov dword [rsp + 0x7c], ebx
sub dword [rsp + 0x40], 1
jne 0x6f588f50
mov r15, qword [rsp + 0x30]
mov edi, dword [rsp + 0x38]
mov edx, r12d
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x54], 0xd
mov esi, ebp
lea rax, [r15 + 0x38]
mov ecx, edi
mov qword [rsp + 0x58], rax
mov eax, r13d
jmp 0x6f589255
mov eax, dword [rsp + 0xac]
mov ecx, dword [rsp + 0xb4]
mov edx, dword [rsp + 0xb0]
mov r14d, dword [rsp + 0x28]
mov edi, dword [rsp + 0xbc]
xor eax, esi
mov ebx, dword [rsp + 0xc0]
mov r10d, dword [rsp + 0xc4]
mov r11d, dword [rsp + 0xe0]
mov r12d, dword [rsp + 0xcc]
xor r14d, esi
mov ebp, dword [rsp + 0xd0]
mov esi, dword [rsp + 0xd8]
mov dword [rsp + 0x80], r14d
mov dword [rsp + 0x24], r14d
mov r14d, dword [r15 + 0x20]
mov dword [rsp + 0x40], edi
mov dword [rsp + 0x30], ebx
mov edi, dword [rsp + 0xd4]
mov ebx, dword [rsp + 0xdc]
mov dword [rsp + 0x28], r10d
mov dword [rsp + 0x48], r14d
mov r14, qword [r15 + 0x20]
mov r10d, dword [rsp + 0xe4]
mov r13d, dword [rsp + 0xb8]
movdqa xmm1, xmmword [r15]
mov qword [r15 + 0x5c], r14
mov r14, qword [r15 + 0x28]
mov r9d, dword [rsp + 0xc8]
movups xmmword [r15 + 0x3c], xmm1
mov qword [r15 + 0x64], r14
mov r14, qword [r15 + 0x30]
mov qword [rsp + 0x38], r14
mov qword [r15 + 0x6c], r14
mov r14d, dword [r15 + 0x38]
movdqa xmm1, xmmword [r15 + 0x10]
movups xmmword [r15 + 0x4c], xmm1
mov dword [rsp + 0x44], r14d
mov r8d, dword [rsp + 0x30]
mov dword [rsp + 0x84], r8d
mov r8d, dword [rsp + 0x28]
mov dword [rsp + 0xa8], r10d
lea r10, [0x6f7339c0]
mov dword [r15 + 0x74], r14d
mov dword [rsp + 0x90], r12d
lea r14, [0x6f733dc0]
lea r12, [0x6f7331c0]
mov dword [rsp + 0x88], r8d
mov r8d, eax
mov dword [rsp + 0x9c], esi
shr r8d, 0x10
mov dword [rsp + 0xa0], ebx
movzx ebx, ah
movzx r8d, r8b
mov dword [rsp + 0x8c], r9d
mov dword [rsp + 0x98], edi
mov esi, dword [r10 + r8*4]
movzx r8d, al
shr eax, 0x18
mov edi, dword [r12 + r8*4]
mov r9d, dword [r14 + rax*4]
mov dword [rsp + 0x94], ebp
mov dword [rsp + 0xa4], r11d
lea r11, [0x6f7335c0]
xor r9d, edi
mov ebx, dword [r11 + rbx*4]
mov ebp, r9d
mov r9d, edx
shr r9d, 0x18
xor ebp, esi
mov eax, r9d
xor ebp, ebx
mov r9d, dword [r14 + rax*4]
movzx eax, dh
mov r14, r12
mov r8d, dword [r11 + rax*4]
movzx eax, dl
shr edx, 0x10
mov eax, dword [r12 + rax*4]
movzx edx, dl
mov r12d, r9d
xor r12d, eax
mov r11d, r12d
mov r12, r10
xor r11d, dword [r10 + rdx*4]
mov edx, ecx
lea r10, [0x6f733dc0]
shr edx, 0x18
mov r10d, dword [r10 + rdx*4]
mov edx, ecx
shr edx, 0x10
xor r11d, r8d
movzx edx, dl
mov edx, dword [r12 + rdx*4]
movzx r12d, cl
xor r9d, r10d
mov r12d, dword [r14 + r12*4]
lea r14, [0x6f7335c0]
movzx ecx, ch
xor eax, r12d
xor r10d, r12d
lea r12, [0x6f7339c0]
xor edi, eax
xor r10d, edx
mov eax, r13d
xor r10d, dword [r14 + rcx*4]
lea rcx, [0x6f733dc0]
shr eax, 0x18
mov eax, dword [rcx + rax*4]
mov ecx, r13d
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [r12 + rcx*4]
xor r9d, eax
xor edx, ecx
xor esi, edx
mov edx, r13d
movzx edx, dh
mov edx, dword [r14 + rdx*4]
lea r14, [0x6f7331c0]
xor r8d, edx
xor r8d, ebx
movzx ebx, r13b
mov r13d, r10d
xor eax, dword [r14 + rbx*4]
mov ebx, r11d
xor ebx, esi
and ebx, 0xff0000
xor eax, ecx
xor edx, eax
xor r13d, r8d
mov eax, r13d
mov r13d, edi
and eax, 0xff00
xor r13d, edx
or ebx, eax
movzx r13d, r13b
or ebx, r13d
mov r13d, ebp
xor r13d, r9d
and r13d, 0xff000000
or r13d, ebx
mov ebx, esi
shl ebx, 8
mov dword [rsp + 0x70], r13d
mov eax, ebx
xor eax, r10d
mov ebx, eax
and ebx, 0xff0000
mov ecx, ebx
mov ebx, r8d
shl ebx, 8
mov eax, ebx
mov ebx, r9d
xor eax, edx
shl ebx, 8
and eax, 0xff00
or eax, ecx
mov ecx, ebx
mov ebx, edi
xor ecx, r11d
shr ebx, 0x18
and ecx, 0xff000000
or eax, ecx
mov ecx, ebx
mov ebx, r9d
xor ecx, ebp
shl ebx, 0x10
movzx ecx, cl
or eax, ecx
mov dword [rsp + 0x74], eax
mov eax, ebx
mov ebx, edi
shr ebx, 0x10
xor eax, r10d
mov ecx, ebx
mov ebx, esi
and eax, 0xff000000
xor ecx, r11d
shl ebx, 0x10
movzx ecx, cl
or eax, ecx
mov ecx, ebx
mov ebx, r8d
xor ecx, edx
and ecx, 0xff0000
or eax, ecx
shr ebx, 0x10
shl r9d, 0x18
shr edi, 8
xor edx, r9d
shr esi, 8
xor r10d, edi
mov ecx, ebx
and edx, 0xff000000
xor ecx, ebp
movzx r9d, r10b
xor ebp, esi
shr r8d, 8
or edx, r9d
and ebp, 0xff0000
xor r8d, r11d
or edx, ebp
and ecx, 0xff00
and r8d, 0xff00
or eax, ecx
or r8d, edx
mov dword [rsp + 0x78], eax
mov rdx, r15
mov dword [rsp + 0x7c], r8d
mov r10d, dword [rsp + 0xc0]
mov r8d, 0x40
mov r11d, dword [rsp + 0xc4]
mov rax, qword [rsp + 0x38]
mov esi, dword [rsp + 0x40]
mov r9d, dword [rsp + 0xd0]
mov dword [rsp + 0x28], r10d
mov r10d, dword [rsp + 0xc8]
mov ebx, dword [rsp + 0xb0]
mov dword [rsp + 0x50], r11d
mov r12d, eax
mov r11d, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0x58]
xor esi, r13d
mov dword [rsp + 0x4c], r10d
mov r10d, dword [rsp + 0xd4]
shr rax, 0x20
xor ebx, r13d
mov ebp, dword [rsp + 0x48]
mov r13d, dword [rsp + 0xb8]
mov edi, dword [rsp + 0x44]
mov dword [rsp + 0x80], esi
mov dword [rsp + 0x48], r9d
mov esi, dword [rsp + 0xb4]
mov dword [rsp + 0x30], r10d
mov dword [rsp + 0x40], r11d
mov qword [rsp + 0x38], rax
call sym.memmove
mov eax, dword [rsp + 0x38]
mov r11d, dword [rsp + 0x50]
lea rcx, [0x6f7335c0]
mov r9d, dword [rsp + 0x48]
mov dword [rsp + 0xa4], edi
lea rdx, [0x6f733dc0]
mov r10d, dword [rsp + 0x4c]
mov dword [rsp + 0x8c], ebp
mov dword [rsp + 0xa0], eax
mov eax, ebx
mov dword [rsp + 0x84], r11d
mov dword [rsp + 0x90], r9d
mov r11d, dword [rsp + 0x40]
lea r9, [0x6f7339c0]
shr eax, 0x10
mov dword [rsp + 0x9c], r12d
mov dword [rsp + 0x88], r10d
movzx eax, al
mov r10d, dword [rsp + 0x30]
mov edi, dword [r9 + rax*4]
movzx eax, bh
mov dword [rsp + 0x98], r11d
mov r11d, dword [rcx + rax*4]
movzx eax, bl
shr ebx, 0x18
mov ebp, dword [r14 + rax*4]
mov eax, esi
mov r12d, dword [rdx + rbx*4]
shr eax, 0x18
mov ebx, esi
mov dword [rsp + 0x94], r10d
mov eax, dword [rdx + rax*4]
movzx edx, bh
mov rbx, r9
mov edx, dword [rcx + rdx*4]
movzx ecx, sil
shr esi, 0x10
mov r8d, dword [r14 + rcx*4]
movzx esi, sil
xor r12d, ebp
mov r10d, eax
xor r12d, edi
xor r12d, r11d
mov dword [rsp + 0x30], edx
xor r10d, r8d
xor r10d, dword [r9 + rsi*4]
mov r9d, r13d
lea rsi, [0x6f733dc0]
xor r10d, edx
shr r9d, 0x18
mov edx, r13d
mov ecx, r9d
mov r9d, dword [rsi + rcx*4]
mov ecx, r13d
movzx esi, dh
shr ecx, 0x10
lea rdx, [0x6f7335c0]
movzx ecx, cl
mov ecx, dword [rbx + rcx*4]
movzx ebx, r13b
xor eax, r9d
mov ebx, dword [r14 + rbx*4]
lea r13, [0x6f733dc0]
xor r9d, ebx
xor r8d, ebx
xor r9d, ecx
xor r9d, dword [rdx + rsi*4]
mov esi, dword [rsp + 0x24]
xor ebp, r8d
mov r8d, esi
shr r8d, 0x18
mov r8d, dword [r13 + r8*4]
mov r13d, esi
lea rsi, [0x6f7339c0]
shr r13d, 0x10
movzx ebx, r13b
mov ebx, dword [rsi + rbx*4]
xor eax, r8d
mov esi, r10d
xor ecx, ebx
xor edi, ecx
mov ecx, dword [rsp + 0x24]
xor esi, edi
and esi, 0xff0000
movzx ecx, ch
mov ecx, dword [rdx + rcx*4]
mov edx, dword [rsp + 0x30]
xor edx, ecx
xor r11d, edx
movzx edx, byte [rsp + 0x24]
xor r8d, dword [r14 + rdx*4]
mov edx, r9d
mov r14d, edi
xor edx, r11d
shl r14d, 8
and edx, 0xff00
xor r14d, r9d
or esi, edx
mov edx, ebp
and r14d, 0xff0000
xor ebx, r8d
mov r8d, ebp
xor ecx, ebx
mov ebx, r11d
xor edx, ecx
movzx edx, dl
or esi, edx
mov edx, r12d
xor edx, eax
and edx, 0xff000000
or esi, edx
mov edx, r11d
shl edx, 8
mov dword [rsp + 0x70], esi
xor edx, ecx
shr r8d, 0x10
shr ebx, 0x10
and edx, 0xff00
xor r8d, r10d
xor ebx, r12d
or r14d, edx
mov edx, eax
movzx r8d, r8b
shl edx, 8
and ebx, 0xff00
xor edx, r10d
and edx, 0xff000000
or r14d, edx
mov edx, ebp
shr ebp, 8
shr edx, 0x18
xor edx, r12d
movzx edx, dl
or r14d, edx
mov edx, eax
shl eax, 0x18
shl edx, 0x10
mov dword [rsp + 0x74], r14d
xor edx, r9d
xor r9d, ebp
and edx, 0xff000000
movzx r9d, r9b
or edx, r8d
mov r8d, edi
shr edi, 8
shl r8d, 0x10
xor r12d, edi
xor r8d, ecx
xor ecx, eax
and r8d, 0xff0000
and ecx, 0xff000000
or edx, r8d
or ecx, r9d
or edx, ebx
and r12d, 0xff0000
shr r11d, 8
xor r10d, r11d
or r12d, ecx
mov dword [rsp + 0x78], edx
and r10d, 0xff00
or r10d, r12d
sub dword [rsp + 0x54], 1
mov dword [rsp + 0x7c], r10d
jne 0x6f589240
mov ebp, esi
mov r8d, dword [rsp + 0x28]
xor ebp, dword [rsp + 0xac]
mov ebx, edx
mov edi, r10d
xor r8d, esi
mov dword [rsp + 0x80], r8d
mov dword [rsp + 0xac], ebp
bswap r14d
mov rax, qword [rsp + 0x158]
mov dword [rax], r14d
bswap ebx
mov dword [rax + 4], ebx
bswap edi
mov dword [rax + 8], edi
mov eax, r8d
bswap eax
mov rdi, qword [rsp + 0x158]
mov dword [rdi + 0xc], eax
mov eax, ebp
bswap eax
mov dword [rdi + 0x10], eax
mov eax, dword [rsp + 0xb0]
bswap eax
mov dword [rdi + 0x14], eax
mov eax, dword [rsp + 0xb4]
bswap eax
cmp qword [rsp + 0x160], 8
mov dword [rdi + 0x18], eax
je 0x6f589994
mov rcx, qword [rsp + 0x140]
call dbg.sph_fugue224_init
nop
add rsp, 0xf8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r9d, 0xff
mov ecx, r8d
shr r9d, cl
not r9d
and edx, r9d
cmp eax, 4
je 0x6f5899b2
mov ecx, eax
mov r8d, 0x10
add eax, 1
sub r8, rcx
cmp eax, 3
mov byte [rsp + rcx + 0x60], dl
lea rdx, [rsp + rcx + 0x60]
ja 0x6f588ecc
nop dword [rax + rax]
mov ecx, eax
add eax, 1
cmp eax, 4
mov byte [rsp + rcx + 0x60], 0
jne 0x6f589980
jmp 0x6f588ecc
mov eax, dword [rsp + 0xb8]
bswap eax
mov rcx, qword [rsp + 0x140]
mov dword [rdi + 0x1c], eax
call dbg.sph_fugue256_init
jmp 0x6f58992d
mov byte [rsp + 0x60], dl
mov r8d, 0x10
lea rdx, [rsp + 0x60]
mov eax, 1
jmp 0x6f589980