Function at 0x918780
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, 0x4e8
mov rbx, qword [rsp + 0x558]
mov rsi, qword [rsp + 0x560]
mov r12, rcx
mov ecx, dword [rsp + 0x550]
mov rdi, rdx
mov rbp, r9
mov qword [rsp + 0x540], r8
test ecx, ecx
je 0x91801f
test rbx, rbx
je 0x918000
test rsi, rsi
je 0x918000
cmp rdi, 0x80
ja 0x917f84
lea r13, [rsp + 0xa0]
mov rdx, r12
mov r8, rdi
mov rcx, r13
call sub.msvcrt.dll_memcpy
lea rax, [rsp + 0x1a0]
mov edx, pe_nt_image_headers64
mov qword [rsp + 0x58], rax
sub rdx, rdi
cmp rdi, 0x80
jne 0x917fc7
lea r8, [rsp + 0x340]
xor eax, eax
lea r14, [rsp + 0x120]
mov qword [rsp + 0x48], r8
nop dword [rax]
movzx edx, byte [r13 + rax]
mov ecx, edx
xor edx, 0x5c
xor ecx, 0x36
mov byte [r8 + rax], dl
mov byte [r14 + rax], cl
add rax, 1
cmp rax, 0x80
jne 0x917978
mov rdi, qword [rsp + 0x58]
lea r12, [rsp + 0x270]
mov rcx, rdi
call fcn.008ebbf0
mov r8d, pe_nt_image_headers64
mov rdx, r14
mov rcx, rdi
call fcn.008ebca0
mov rcx, r12
call fcn.008ebbf0
mov rdx, qword [rsp + 0x48]
mov r8d, pe_nt_image_headers64
mov rcx, r12
call fcn.008ebca0
lea eax, [rsi + 0x3f]
shr eax, 6
mov dword [rsp + 0x84], eax
je 0x917f55
lea rax, [rsp + 0x160]
mov dword [rsp + 0x64], ebp
lea r15, [rsp + 0x410]
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0x9c]
mov qword [rsp + 0x78], rax
lea rax, [rbx + rsi]
mov qword [rsp + 0x50], rsi
mov dword [rsp + 0x60], 1
mov qword [rsp + 0x68], rax
mov eax, 0x600
bswap eax
mov dword [rsp + 0x80], eax
lea rax, [rsp + 0x340]
mov qword [rsp + 0x88], r13
mov r13, rax
nop dword [rax + rax]
mov rdi, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x58]
mov ecx, 0x34
mov qword [rsp + 0x48], r13
rep movsq qword [rdi], qword [rsi]
mov eax, dword [rsp + 0x60]
mov r8d, dword [rsp + 0x64]
mov rcx, r13
bswap eax
mov dword [rsp + 0x9c], eax
mov rax, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x540]
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 qword [rax + 0x28], 0
mov qword [rax + 0x30], 0
mov dword [rax + 0x38], 0
mov eax, dword [rsp + 0x80]
mov byte [rsp + 0x160], pe_nt_image_headers64
mov dword [rsp + 0x19c], eax
call fcn.008ebca0
mov rdx, qword [rsp + 0x78]
mov r8d, 4
mov rcx, r13
call fcn.008ebca0
mov rdx, r14
mov rcx, r13
call fcn.008ebe90
mov r8d, 0x40
mov rdx, r14
mov rcx, r15
call fcn.008ebca0
mov rdx, r14
mov rcx, r15
call fcn.008ebe90
mov rax, qword [rsp + 0x4c0]
cmp dword [rsp + 0x550], 1
mov r12, qword [rsp + 0x4a0]
mov rbp, qword [rsp + 0x4a8]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x4c8]
mov rdi, qword [rsp + 0x4b0]
mov rsi, qword [rsp + 0x4b8]
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x4d0]
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x4d8]
mov qword [rsp + 0x28], rax
jbe 0x917e37
mov rax, rdi
mov ebx, 1
mov rdi, r12
mov r12, rax
nop dword [rax]
mov r8d, pe_nt_image_headers64
mov rdx, r14
mov rcx, r13
add ebx, 1
mov rax, qword [rsp + 0x230]
mov qword [rsp + 0x3d0], rax
mov rax, qword [rsp + 0x238]
mov qword [rsp + 0x3d8], rax
mov rax, qword [rsp + 0x240]
mov qword [rsp + 0x3e0], rax
mov rax, qword [rsp + 0x248]
mov qword [rsp + 0x3e8], rax
mov rax, qword [rsp + 0x250]
mov qword [rsp + 0x3f0], rax
mov rax, qword [rsp + 0x258]
mov qword [rsp + 0x3f8], rax
mov rax, qword [rsp + 0x260]
mov qword [rsp + 0x400], rax
mov rax, qword [rsp + 0x268]
mov qword [rsp + 0x408], rax
call fcn.008ebca0
mov rax, qword [rsp + 0x3d0]
mov rdx, r14
mov rcx, r15
bswap rax
mov qword [rsp + 0x120], rax
mov rax, qword [rsp + 0x3d8]
mov r8d, pe_nt_image_headers64
bswap rax
mov qword [rsp + 0x128], rax
mov rax, qword [rsp + 0x3e0]
bswap rax
mov qword [rsp + 0x130], rax
mov rax, qword [rsp + 0x3e8]
bswap rax
mov qword [rsp + 0x138], rax
mov rax, qword [rsp + 0x3f0]
bswap rax
mov qword [rsp + 0x140], rax
mov rax, qword [rsp + 0x3f8]
bswap rax
mov qword [rsp + 0x148], rax
mov rax, qword [rsp + 0x400]
bswap rax
mov qword [rsp + 0x150], rax
mov rax, qword [rsp + 0x408]
bswap rax
mov qword [rsp + 0x158], rax
mov rax, qword [rsp + 0x300]
mov qword [rsp + 0x4a0], rax
mov rax, qword [rsp + 0x308]
mov qword [rsp + 0x4a8], rax
mov rax, qword [rsp + 0x310]
mov qword [rsp + 0x4b0], rax
mov rax, qword [rsp + 0x318]
mov qword [rsp + 0x4b8], rax
mov rax, qword [rsp + 0x320]
mov qword [rsp + 0x4c0], rax
mov rax, qword [rsp + 0x328]
mov qword [rsp + 0x4c8], rax
mov rax, qword [rsp + 0x330]
mov qword [rsp + 0x4d0], rax
mov rax, qword [rsp + 0x338]
mov qword [rsp + 0x4d8], rax
call fcn.008ebca0
mov r11, qword [rsp + 0x4b0]
mov r10, qword [rsp + 0x4b8]
mov r9, qword [rsp + 0x4c0]
mov r8, qword [rsp + 0x4c8]
mov rcx, qword [rsp + 0x4d0]
xor qword [rsp + 0x30], r9
xor r12, r11
xor rsi, r10
mov rdx, qword [rsp + 0x4d8]
mov rax, qword [rsp + 0x4a0]
xor qword [rsp + 0x40], r8
xor rdi, qword [rsp + 0x4a0]
bswap rax
xor qword [rsp + 0x38], rcx
xor rbp, qword [rsp + 0x4a8]
mov qword [rsp + 0x120], rax
mov rax, qword [rsp + 0x4a8]
xor qword [rsp + 0x28], rdx
bswap rax
mov qword [rsp + 0x128], rax
mov rax, r11
bswap rax
mov qword [rsp + 0x130], rax
mov rax, r10
bswap rax
mov qword [rsp + 0x138], rax
mov rax, r9
bswap rax
mov qword [rsp + 0x140], rax
mov rax, r8
bswap rax
mov qword [rsp + 0x148], rax
mov rax, rcx
bswap rax
mov qword [rsp + 0x150], rax
mov rax, rdx
bswap rax
mov qword [rsp + 0x158], rax
cmp dword [rsp + 0x550], ebx
jne 0x917b90
mov rax, r12
mov r12, rdi
mov rdi, rax
bswap rdi
mov rdx, qword [rsp + 0x68]
mov qword [rsp + 0xb0], rdi
mov rdi, qword [rsp + 0x50]
mov rax, qword [rsp + 0x30]
bswap r12
bswap rax
bswap rbp
bswap rsi
mov qword [rsp + 0xc0], rax
sub rdx, rdi
mov rax, qword [rsp + 0x40]
bswap rax
mov qword [rsp + 0xc8], rax
mov rax, qword [rsp + 0x38]
bswap rax
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0x28]
bswap rax
cmp rdi, 0x40
mov qword [rsp + 0xd8], rax
mov eax, 0x40
cmovbe rax, rdi
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xa8], rbp
mov qword [rsp + 0xb8], rsi
cmp eax, 8
jae 0x917f08
test al, 4
jne 0x917f69
test eax, eax
je 0x917ee3
mov rsi, qword [rsp + 0x88]
movzx ecx, byte [rsi]
mov byte [rdx], cl
test al, 2
jne 0x91806f
mov esi, dword [rsp + 0x60]
sub qword [rsp + 0x50], 0x40
lea eax, [rsi + 1]
cmp dword [rsp + 0x84], esi
je 0x917f55
mov dword [rsp + 0x60], eax
jmp 0x917a50
mov rbx, qword [rsp + 0x88]
lea r10, [rdx + 8]
and r10, 0xfffffffffffffff8
mov rcx, qword [rbx]
mov qword [rdx], rcx
mov ecx, eax
mov r8, qword [rbx + rcx - 8]
mov qword [rdx + rcx - 8], r8
sub rdx, r10
add eax, edx
sub rbx, rdx
and eax, 0xfffffff8
mov r9, rbx
cmp eax, 8
jb 0x917ee3
and eax, 0xfffffff8
xor edx, edx
mov ecx, edx
add edx, 8
mov r8, qword [r9 + rcx]
mov qword [r10 + rcx], r8
cmp edx, eax
jb 0x917f42
jmp 0x917ee3
add rsp, 0x4e8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rsi, qword [rsp + 0x88]
mov ecx, dword [rsi]
mov dword [rdx], ecx
mov ecx, eax
mov eax, dword [rsi + rcx - 4]
mov dword [rdx + rcx - 4], eax
jmp 0x917ee3
lea rax, [rsp + 0x1a0]
lea r13, [rsp + 0xa0]
mov r15, rax
mov rcx, rax
mov qword [rsp + 0x58], rax
call fcn.008ebbf0
mov r8d, edi
mov rdx, r12
mov rcx, r15
call fcn.008ebca0
mov rdx, r13
mov rcx, r15
mov edi, 0x40
call fcn.008ebe90
mov edx, 0x40
lea rcx, [r13 + rdi]
mov eax, edx
cmp edx, 8
jae 0x91803e
and edx, 4
jne 0x918088
test eax, eax
je 0x91795a
mov byte [rcx], 0
test al, 2
je 0x91795a
xor edx, edx
mov word [rcx + rax - 2], dx
jmp 0x91795a
mov r8d, 0x161
lea rdx, str.cbitscryptonite_pbkdf2.c
lea rcx, str.out__nout
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x917915
mov r8d, 0x161
lea rdx, str.cbitscryptonite_pbkdf2.c
lea rcx, str.iterations
call qword [sym.imp.msvcrt.dll__assert]
jmp 0x917903
mov eax, edx
lea rdi, [rcx + 8]
mov qword [rcx], 0
mov qword [rcx + rax - 8], 0
and rdi, 0xfffffffffffffff8
mov rax, rcx
sub rax, rdi
add eax, edx
shr eax, 3
mov ecx, eax
xor eax, eax
rep stosq qword [rdi], rax
jmp 0x91795a
mov rsi, qword [rsp + 0x88]
mov eax, eax
movzx ecx, word [rsi + rax - 2]
mov word [rdx + rax - 2], cx
jmp 0x917ee3
mov dword [rcx], 0
mov dword [rcx + rax - 4], 0
jmp 0x91795a
jmp 0x9178c0