Function at 0x28f60
Capabilities:
Hash data using sha1

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xc0
mov eax, dword [rcx + 0x38c]
mov rbx, rcx
cmp eax, 3
je 0x28f9a
cmp eax, 5
je 0x28f9a
cmp eax, 6
je 0x28f9a
mov dword [rcx], 6
jmp 0x29715
mov r15, qword [rcx + 0x7f8]
add rcx, 0x40
mov byte [r15 + 5], 0xc
mov r8, qword [rcx - 0x20]
mov rdx, qword [rcx - 0x28]
call fcn.00026da8
xor r14d, r14d
cmp eax, r14d
jne 0x29717
lea r8, [rsp + 0x100]
lea rdx, [r15 + 9]
lea rcx, [rbx + 0x40]
lea rsi, [r15 + 9]
call fcn.000278f0
cmp eax, r14d
jne 0x29717
mov rbp, qword [rsp + 0x100]
lea rcx, [rbx + 0x50]
lea r8, [rsp + 0x100]
add rsi, rbp
mov rdx, rsi
call fcn.000278f0
cmp eax, r14d
jne 0x29717
add rsi, qword [rsp + 0x100]
add rbp, qword [rsp + 0x100]
lea rcx, [rbx + 0x70]
lea r8, [rsp + 0x100]
mov rdx, rsi
call fcn.000278f0
cmp eax, r14d
jne 0x29717
mov r12, qword [rsp + 0x100]
mov eax, dword [rbx + 0x38c]
add rsi, r12
add rbp, r12
cmp eax, 3
je 0x29066
cmp eax, 5
je 0x29066
cmp eax, 8
je 0x29066
cmp eax, 0xa
jne 0x296e2
movzx ecx, word [rbx + 0x37e]
mov edx, 0x302
cmp cx, dx
ja 0x29412
cmp eax, 3
je 0x291ed
cmp eax, 8
je 0x291ed
cmp eax, 5
jne 0x291e3
mov r13d, 0x53534c4d
lea edx, [rax + 0x6b]
xor ecx, ecx
mov r8d, r13d
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
xor edi, edi
mov r14, rax
cmp rax, rdi
je 0x2920e
lea rdx, [rbx + 0x838]
lea r8d, [rdi + 0x40]
mov rcx, rax
mov dword [rax], 0x67452301
mov dword [rax + 4], 0xefcdab89
mov dword [rax + 8], 0x98badcfe
mov dword [rax + 0xc], 0x10325476
mov dword [rax + 0x10], 0xc3d2e1f0
mov qword [rax + 0x58], rdi
mov qword [rax + 0x60], rdi
call fcn.0003598c
lea rdx, [r15 + 9]
mov r8, rbp
mov rcx, r14
call fcn.0003598c
xor edx, edx
mov rcx, r14
call fcn.00035a14
mov rcx, qword [rbx + 0x218]
lea r11d, [rdi + 1]
mov rdx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
lea r8, [rsp + 0x40]
mov dword [rsp + 0x40], r11d
mov dword [rsp + 0x44], edi
mov qword [rsp + 0x48], rdi
mov dword [rsp + 0x50], r11d
mov dword [rsp + 0x54], edi
mov qword [rsp + 0x58], rdi
mov dword [rsp + 0x60], r11d
mov dword [rsp + 0x64], edi
mov qword [rsp + 0x68], rdi
mov dword [rsp + 0x70], r11d
mov dword [rsp + 0x74], edi
mov qword [rsp + 0x78], rdi
call fcn.000304c0
mov edi, eax
test eax, eax
jne 0x291a7
mov rdx, qword [rbx + 0x20]
lea rcx, [rsp + 0x100]
lea rax, [rsi + 2]
mov qword [rsp + 0x30], rcx
mov rcx, qword [rbx + 0x18]
mov qword [rsp + 0x28], rax
lea r8, [rsp + 0x40]
mov r9, r14
mov qword [rsp + 0x20], 0x14
call fcn.00027c1c
mov r12, qword [rsp + 0x100]
mov edi, eax
mov edx, r13d
mov rcx, r14
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
lea rcx, [rsp + 0x40]
call fcn.00030a94
lea rcx, [rsp + 0x50]
call fcn.00030a94
lea rcx, [rsp + 0x60]
call fcn.00030a94
lea rcx, [rsp + 0x70]
call fcn.00030a94
xor r14d, r14d
jmp 0x293f1
mov edi, 0xf7
jmp 0x293f6
mov r13d, 0x53534c4d
mov edi, 0x70
xor ecx, ecx
mov r8d, r13d
mov rdx, rdi
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov r14, rax
test rax, rax
jne 0x29218
mov eax, 0x64
jmp 0x29717
and qword [rax + 0x50], 0
and qword [rax + 0x58], 0
lea rdx, [rbx + 0x838]
mov r8d, 0x40
mov rcx, rax
mov dword [rax], 0x67452301
mov dword [rax + 4], 0xefcdab89
mov dword [rax + 8], 0x98badcfe
mov dword [rax + 0xc], 0x10325476
call fcn.00034fc0
lea rdx, [r15 + 9]
mov r8, rbp
mov rcx, r14
call fcn.00034fc0
lea rdx, [rbx + 0x3f8]
mov rcx, r14
call fcn.00035048
mov edx, r13d
mov rcx, r14
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov r8d, r13d
mov rdx, rdi
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
xor r14d, r14d
mov rdi, rax
cmp rax, r14
je 0x2920e
lea r8d, [r14 + 0x40]
lea rdx, [rbx + 0x838]
mov rcx, rax
mov dword [rax], 0x67452301
mov dword [rax + 4], 0xefcdab89
mov dword [rax + 8], 0x98badcfe
mov dword [rax + 0xc], 0x10325476
mov dword [rax + 0x10], 0xc3d2e1f0
mov qword [rax + 0x58], r14
mov qword [rax + 0x60], r14
call fcn.0003598c
lea rdx, [r15 + 9]
mov r8, rbp
mov rcx, rdi
call fcn.0003598c
lea rdx, [rbx + 0x408]
mov rcx, rdi
call fcn.00035a14
mov edx, r13d
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov rcx, qword [rbx + 0x218]
lea r11d, [r14 + 1]
mov rdx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
lea r8, [rsp + 0x40]
mov dword [rsp + 0x40], r11d
mov dword [rsp + 0x44], r14d
mov qword [rsp + 0x48], r14
mov dword [rsp + 0x50], r11d
mov dword [rsp + 0x54], r14d
mov qword [rsp + 0x58], r14
mov dword [rsp + 0x60], r11d
mov dword [rsp + 0x64], r14d
mov qword [rsp + 0x68], r14
mov dword [rsp + 0x70], r11d
mov dword [rsp + 0x74], r14d
mov qword [rsp + 0x78], r14
mov dword [rsp + 0x80], r11d
mov dword [rsp + 0x84], r14d
mov qword [rsp + 0x88], r14
mov dword [rsp + 0x90], r11d
mov dword [rsp + 0x94], r14d
mov qword [rsp + 0x98], r14
mov dword [rsp + 0xa0], r11d
mov dword [rsp + 0xa4], r14d
mov qword [rsp + 0xa8], r14
mov dword [rsp + 0xb0], r11d
mov dword [rsp + 0xb4], r14d
mov qword [rsp + 0xb8], r14
call fcn.0002ffe0
mov edi, eax
cmp eax, r14d
jne 0x293e7
lea r8, [rsi + 2]
lea r9, [rsp + 0x100]
lea rdx, [rbx + 0x3f8]
lea rcx, [rsp + 0x40]
call fcn.00027998
mov r12, qword [rsp + 0x100]
mov edi, eax
lea rcx, [rsp + 0x40]
call fcn.00025778
cmp edi, r14d
je 0x293fd
mov eax, edi
jmp 0x29717
movzx eax, r12w
lea rbp, [r12 + rbp + 2]
rol ax, 8
mov word [rsi], ax
jmp 0x296e2
mov eax, 0x303
cmp cx, ax
jne 0x296d4
mov cl, byte [rbx + 0x388]
call fcn.00028a58
mov r14, rax
test rax, rax
jne 0x2943d
mov eax, 0x20b
jmp 0x29717
mov rdx, qword [rax + 0x18]
mov r13d, 0x53534c4d
xor ecx, ecx
and rdx, 0xfffffffffffffff0
mov r8d, r13d
add rdx, 0x10
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rdi, rax
mov qword [rsp + 0x108], rax
test rax, rax
je 0x2920e
mov rcx, rax
call qword [r14 + 0x38]
lea rdx, [rbx + 0x838]
mov r8d, 0x40
mov rcx, rdi
call qword [r14 + 0x40]
lea rdx, [r15 + 9]
mov r8, rbp
mov rcx, rdi
call qword [r14 + 0x40]
xor edx, edx
mov rcx, rdi
call qword [r14 + 0x48]
mov r11d, dword [rbx + 0x38c]
cmp r11d, 3
je 0x295aa
cmp r11d, 8
je 0x295aa
cmp r11d, 5
jne 0x295a0
mov byte [rsi + 1], 2
mov al, byte [rbx + 0x388]
mov r11d, 1
mov byte [rsi], al
mov rcx, qword [rbx + 0x218]
xor eax, eax
mov rdx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
lea r8, [rsp + 0x40]
mov dword [rsp + 0x40], r11d
mov dword [rsp + 0x44], eax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x50], r11d
mov dword [rsp + 0x54], eax
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x60], r11d
mov dword [rsp + 0x64], eax
mov qword [rsp + 0x68], rax
mov dword [rsp + 0x70], r11d
mov dword [rsp + 0x74], eax
mov qword [rsp + 0x78], rax
call fcn.000304c0
mov edi, eax
test eax, eax
jne 0x29573
mov r9, qword [rsp + 0x108]
mov rdx, qword [rbx + 0x20]
lea rcx, [rsp + 0x100]
mov qword [rsp + 0x30], rcx
mov rcx, qword [rbx + 0x18]
lea rax, [rsi + 4]
mov qword [rsp + 0x28], rax
mov rax, qword [r14 + 0x28]
lea r8, [rsp + 0x40]
mov qword [rsp + 0x20], rax
call fcn.00027c1c
mov r12, qword [rsp + 0x100]
mov edi, eax
lea rcx, [rsp + 0x40]
call fcn.00030a94
lea rcx, [rsp + 0x50]
call fcn.00030a94
lea rcx, [rsp + 0x60]
call fcn.00030a94
lea rcx, [rsp + 0x70]
call fcn.00030a94
jmp 0x296ab
mov edi, 0xf7
jmp 0x296ab
mov r11d, 1
lea r8, [rsp + 0x40]
mov byte [rsi + 1], r11b
mov al, byte [rbx + 0x388]
mov dword [rsp + 0x40], r11d
mov byte [rsi], al
mov rcx, qword [rbx + 0x218]
xor eax, eax
mov rdx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
mov dword [rsp + 0x44], eax
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x50], r11d
mov dword [rsp + 0x54], eax
mov qword [rsp + 0x58], rax
mov dword [rsp + 0x60], r11d
mov dword [rsp + 0x64], eax
mov qword [rsp + 0x68], rax
mov dword [rsp + 0x70], r11d
mov dword [rsp + 0x74], eax
mov qword [rsp + 0x78], rax
mov dword [rsp + 0x80], r11d
mov dword [rsp + 0x84], eax
mov qword [rsp + 0x88], rax
mov dword [rsp + 0x90], r11d
mov dword [rsp + 0x94], eax
mov qword [rsp + 0x98], rax
mov dword [rsp + 0xa0], r11d
mov dword [rsp + 0xa4], eax
mov qword [rsp + 0xa8], rax
mov dword [rsp + 0xb0], r11d
mov dword [rsp + 0xb4], eax
mov qword [rsp + 0xb8], rax
call fcn.0002ffe0
mov edi, eax
test eax, eax
jne 0x296a1
mov r8, qword [rsp + 0x108]
lea rax, [rsp + 0x100]
lea r9, [rsi + 4]
lea rcx, [rsp + 0x40]
mov rdx, r14
mov qword [rsp + 0x20], rax
call fcn.00025d98
mov r12, qword [rsp + 0x100]
mov edi, eax
lea rcx, [rsp + 0x40]
call fcn.00025778
mov rcx, qword [rsp + 0x108]
mov edx, r13d
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
movzx r11d, r12w
lea rbp, [r12 + rbp + 4]
rol r11w, 8
xor r14d, r14d
mov word [rsi + 2], r11w
jmp 0x296d9
mov edi, 0xec
cmp edi, r14d
jne 0x293f6
mov eax, ebp
lea rdx, [rbp + 4]
mov r8d, 0x16
shr eax, 0x10
mov rcx, rbx
mov byte [r15 + 8], bpl
mov byte [r15 + 6], al
mov eax, ebp
shr eax, 8
mov byte [r15 + 7], al
call fcn.0002bb4c
cmp eax, r14d
jne 0x29717
mov dword [rbx], 6
xor eax, eax
mov rbx, qword [rsp + 0x110]
add rsp, 0xc0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret