Function at 0x9180d0
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x288
mov rsi, qword [rsp + 0x2f8]
mov rdi, qword [rsp + 0x300]
mov r13, rcx
mov ecx, dword [rsp + 0x2f0]
mov rbx, rdx
mov rbp, r9
mov qword [rsp + 0x2e0], r8
test ecx, ecx
je 0x9186fc
test rsi, rsi
je 0x9186dd
test rdi, rdi
je 0x9186dd
cmp rbx, 0x40
ja 0x918643
lea r10, [rsp + 0x80]
mov rdx, r13
mov r8, rbx
mov rcx, r10
lea r12, [rsp + 0x100]
call sub.msvcrt.dll_memcpy
mov edx, 0x40
mov r10, rax
sub rdx, rbx
cmp rbx, 0x40
jne 0x918688
xor eax, eax
lea rbx, [rsp + 0xc0]
lea r15, [rsp + 0x1c0]
nop dword [rax]
movzx edx, byte [r10 + rax]
mov ecx, edx
xor edx, 0x5c
xor ecx, 0x36
mov byte [r15 + rax], dl
mov byte [rbx + rax], cl
add rax, 1
cmp rax, 0x40
jne 0x918178
mov rcx, r12
mov qword [rsp + 0x28], r10
call fcn.00919920
mov r8d, 0x40
mov rdx, rbx
mov rcx, r12
call fcn.00919970
lea r12, [rsp + 0x160]
mov rcx, r12
call fcn.00919920
mov rdx, r15
mov rcx, r12
mov r8d, 0x40
call fcn.00919970
lea eax, [rdi + 0x13]
mov ecx, 0xcccccccd
mov rdx, rax
imul rax, rcx
shr rax, 0x24
mov qword [rsp + 0x60], rax
cmp edx, 0x13
jbe 0x9185ca
lea rax, [rsp + 0xd4]
mov r10, qword [rsp + 0x28]
mov dword [rsp + 0x40], ebp
lea r14, [rsp + 0x220]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x7c]
mov qword [rsp + 0x50], rax
lea rax, [rsi + rdi]
mov qword [rsp + 0x58], rax
mov eax, 0x2a0
mov qword [rsp + 0x38], rdi
bswap eax
mov dword [rsp + 0x34], 1
mov dword [rsp + 0x44], eax
mov qword [rsp + 0x68], r10
nop dword [rax]
movdqa xmm0, xmmword [rsp + 0x100]
mov eax, dword [rsp + 0x34]
mov rcx, r15
movdqa xmm1, xmmword [rsp + 0x110]
movdqa xmm2, xmmword [rsp + 0x120]
movdqa xmm3, xmmword [rsp + 0x130]
movaps xmmword [rsp + 0x1c0], xmm0
movdqa xmm4, xmmword [rsp + 0x140]
bswap eax
movdqa xmm0, xmmword [rsp + 0x160]
mov dword [rsp + 0x7c], eax
mov rax, qword [rsp + 0x48]
movaps xmmword [rsp + 0x1d0], xmm1
movdqa xmm5, xmmword [rsp + 0x150]
movdqa xmm1, xmmword [rsp + 0x170]
movaps xmmword [rsp + 0x1e0], xmm2
movdqa xmm2, xmmword [rsp + 0x180]
mov qword [rax], 0
mov qword [rax + 8], 0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0
mov qword [rax + 0x20], 0
mov eax, dword [rsp + 0x44]
movaps xmmword [rsp + 0x1f0], xmm3
movdqa xmm3, xmmword [rsp + 0x190]
movaps xmmword [rsp + 0x200], xmm4
movdqa xmm4, xmmword [rsp + 0x1a0]
mov dword [rsp + 0xfc], eax
movaps xmmword [rsp + 0x220], xmm0
movaps xmmword [rsp + 0x230], xmm1
movaps xmmword [rsp + 0x240], xmm2
movaps xmmword [rsp + 0x250], xmm3
movaps xmmword [rsp + 0x210], xmm5
mov byte [rsp + 0xd4], pe_nt_image_headers64
movaps xmmword [rsp + 0x260], xmm4
mov r8d, dword [rsp + 0x40]
movdqa xmm5, xmmword [rsp + 0x1b0]
mov rdx, qword [rsp + 0x2e0]
movaps xmmword [rsp + 0x270], xmm5
call fcn.00919970
mov rdx, qword [rsp + 0x50]
mov r8d, 4
mov rcx, r15
call fcn.00919970
mov rdx, rbx
mov rcx, r15
call fcn.00919b50
mov r8d, 0x14
mov rdx, rbx
mov rcx, r14
call fcn.00919970
mov rdx, rbx
mov rcx, r14
call fcn.00919b50
mov eax, dword [rsp + 0x278]
cmp dword [rsp + 0x2f0], 1
mov r13d, dword [rsp + 0x268]
mov r12d, dword [rsp + 0x26c]
mov dword [rsp + 0x28], eax
mov ebp, dword [rsp + 0x270]
mov edi, dword [rsp + 0x274]
jbe 0x91853f
mov esi, 1
nop dword [rax + rax]
mov r8d, 0x40
mov rdx, rbx
mov rcx, r15
add esi, 1
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0x208], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x210], rax
mov eax, dword [rsp + 0x158]
mov dword [rsp + 0x218], eax
call fcn.00919970
mov eax, dword [rsp + 0x208]
mov rdx, rbx
mov rcx, r14
bswap eax
mov dword [rsp + 0xc0], eax
mov eax, dword [rsp + 0x20c]
mov r8d, 0x40
bswap eax
mov dword [rsp + 0xc4], eax
mov eax, dword [rsp + 0x210]
bswap eax
mov dword [rsp + 0xc8], eax
mov eax, dword [rsp + 0x214]
bswap eax
mov dword [rsp + 0xcc], eax
mov eax, dword [rsp + 0x218]
bswap eax
mov dword [rsp + 0xd0], eax
mov rax, qword [rsp + 0x1a8]
mov qword [rsp + 0x268], rax
mov rax, qword [rsp + 0x1b0]
mov qword [rsp + 0x270], rax
mov eax, dword [rsp + 0x1b8]
mov dword [rsp + 0x278], eax
call fcn.00919970
mov edx, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x26c]
mov r8d, dword [rsp + 0x270]
mov r10d, dword [rsp + 0x274]
mov r11d, dword [rsp + 0x278]
mov eax, edx
xor r13d, edx
xor r12d, ecx
bswap eax
xor dword [rsp + 0x28], r11d
xor ebp, r8d
xor edi, r10d
mov dword [rsp + 0xc0], eax
mov eax, ecx
bswap eax
mov dword [rsp + 0xc4], eax
mov eax, r8d
bswap eax
mov dword [rsp + 0xc8], eax
mov eax, r10d
bswap eax
mov dword [rsp + 0xcc], eax
mov eax, r11d
bswap eax
mov dword [rsp + 0xd0], eax
cmp dword [rsp + 0x2f0], esi
jne 0x9183f0
bswap edi
mov rdx, qword [rsp + 0x58]
mov esi, dword [rsp + 0x28]
mov eax, 0x14
mov dword [rsp + 0x8c], edi
mov rdi, qword [rsp + 0x38]
bswap r13d
bswap r12d
bswap ebp
bswap esi
sub rdx, rdi
cmp rdi, 0x14
mov dword [rsp + 0x80], r13d
cmovbe rax, rdi
mov dword [rsp + 0x84], r12d
mov dword [rsp + 0x88], ebp
mov dword [rsp + 0x90], esi
cmp eax, 8
jae 0x9185e0
test al, 4
jne 0x91862b
test eax, eax
je 0x9185b1
mov rdi, qword [rsp + 0x68]
movzx ecx, byte [rdi]
mov byte [rdx], cl
test al, 2
jne 0x918740
add dword [rsp + 0x34], 1
mov eax, dword [rsp + 0x34]
sub qword [rsp + 0x38], 0x14
cmp dword [rsp + 0x60], eax
jae 0x918248
add rsp, 0x288
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rsi, qword [rsp + 0x68]
mov rcx, qword [rsi]
mov qword [rdx], rcx
mov ecx, eax
mov r8, qword [rsi + rcx - 8]
mov qword [rdx + rcx - 8], r8
lea rcx, [rdx + 8]
and rcx, 0xfffffffffffffff8
sub rdx, rcx
add eax, edx
sub rsi, rdx
and eax, 0xfffffff8
mov r8, rsi
cmp eax, 8
jb 0x9185b1
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov r10, qword [r8 + r9]
mov qword [rcx + r9], r10
cmp edx, eax
jb 0x918617
jmp 0x9185b1
mov rdi, qword [rsp + 0x68]
mov eax, eax
mov ecx, dword [rdi]
mov dword [rdx], ecx
mov ecx, dword [rdi + rax - 4]
mov dword [rdx + rax - 4], ecx
jmp 0x9185b1
lea r12, [rsp + 0x100]
mov rcx, r12
call fcn.00919920
mov r8d, ebx
mov rdx, r13
mov rcx, r12
call fcn.00919970
lea r10, [rsp + 0x80]
mov rcx, r12
mov ebx, 0x14
mov rdx, r10
mov qword [rsp + 0x28], r10
call fcn.00919b50
mov r10, qword [rsp + 0x28]
mov edx, 0x2c
add rbx, r10
mov eax, edx
xor r8d, r8d
cmp edx, 8
jb 0x91871b
lea rcx, [rbx + 8]
mov eax, edx
mov qword [rbx], 0
mov qword [rbx + rax - 8], 0
and rcx, 0xfffffffffffffff8
sub rbx, rcx
lea eax, [rdx + rbx]
and eax, 0xfffffff8
cmp eax, 8
jb 0x918162
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [rcx + r9], r8
cmp edx, eax
jb 0x9186ca
jmp 0x918162
mov r8d, 0xf7
lea rdx, str.cbitscryptonite_pbkdf2.c
lea rcx, str.out__nout
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x918125
mov r8d, 0xf7
lea rdx, str.cbitscryptonite_pbkdf2.c
lea rcx, str.iterations
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x918113
and edx, 4
jne 0x918756
test eax, eax
je 0x918162
mov byte [rbx], 0
test al, 2
je 0x918162
xor edx, edx
mov word [rbx + rax - 2], dx
jmp 0x918162
mov rdi, qword [rsp + 0x68]
mov eax, eax
movzx ecx, word [rdi + rax - 2]
mov word [rdx + rax - 2], cx
jmp 0x9185b1
mov dword [rbx], 0
mov dword [rbx + rax - 4], 0
jmp 0x918162