Function at 0x2f270
Capabilities:
Hash data using sha1

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rbx, r8
mov r12, rdx
mov rbp, rcx
cmp r8, 4
jae 0x2f2a5
mov eax, 0x214
jmp 0x2f71c
cmp dword [rcx], 4
je 0x2f2b4
mov eax, 0x1f4
jmp 0x2f71c
call fcn.00027448
mov eax, dword [rbp + 0x38c]
cmp eax, 3
je 0x2f2ce
cmp eax, 5
je 0x2f2ce
cmp eax, 6
jne 0x2f2aa
lea r15, [r12 + 4]
sub rbx, 4
mov rdi, r15
cmp rbx, 2
jb 0x2f29b
lea r9, [rsp + 0x70]
lea rcx, [rbp + 0x40]
mov r8, rbx
mov rdx, r15
call fcn.00027944
xor r14d, r14d
cmp eax, r14d
jne 0x2f71c
sub rbx, qword [rsp + 0x70]
add rdi, qword [rsp + 0x70]
cmp rbx, 2
jb 0x2f29b
lea rcx, [rbp + 0x50]
lea r9, [rsp + 0x70]
mov r8, rbx
mov rdx, rdi
call fcn.00027944
cmp eax, r14d
jne 0x2f71c
sub rbx, qword [rsp + 0x70]
add rdi, qword [rsp + 0x70]
cmp rbx, 2
jb 0x2f29b
lea r9, [rsp + 0x70]
lea rcx, [rbp + 0x80]
mov r8, rbx
mov rdx, rdi
call fcn.00027944
cmp eax, r14d
jne 0x2f71c
add rdi, qword [rsp + 0x70]
sub rbx, qword [rsp + 0x70]
lea rdx, [rbp + 0x80]
lea rcx, [rbp + 0x40]
call fcn.00026e40
mov esi, eax
cmp eax, r14d
jne 0x2f71c
mov edx, dword [rbp + 0x38c]
mov r13, rdi
sub r13, r12
sub r13, 4
cmp edx, 3
je 0x2f3ae
cmp edx, 5
je 0x2f3ae
cmp edx, 8
je 0x2f3ae
cmp edx, 0xa
jne 0x2f713
movzx eax, word [rbp + 0x37e]
mov ecx, 0x302
cmp ax, cx
ja 0x2f5da
cmp rbx, 2
jb 0x2f29b
movzx eax, word [rdi]
rol ax, 8
movzx ecx, ax
add rcx, 2
cmp rbx, rcx
jb 0x2f29b
cmp edx, 3
je 0x2f4a2
cmp edx, 8
je 0x2f4a2
cmp edx, 5
jne 0x2f498
mov ebx, 0x53534c4d
mov edx, 0x70
xor ecx, ecx
mov r8d, ebx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov r12, rax
cmp rax, r14
je 0x2f4c2
lea rdx, [rbp + 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
mov dword [rax + 0x10], 0xc3d2e1f0
mov qword [rax + 0x58], r14
mov qword [rax + 0x60], r14
call fcn.0003598c
mov r8, r13
mov rdx, r15
mov rcx, r12
call fcn.0003598c
xor edx, edx
mov rcx, r12
call fcn.00035a14
movzx r11d, word [rdi]
lea r9, [rdi + 2]
rol r11w, 8
mov r8d, 0x14
movzx eax, r11w
mov qword [rsp + 0x20], rax
jmp 0x2f6e9
mov esi, 0xf7
jmp 0x2f713
mov ebx, 0x53534c4d
mov esi, 0x70
xor ecx, ecx
mov r8d, ebx
mov rdx, rsi
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov r12, rax
cmp rax, r14
jne 0x2f4cc
mov eax, 0x64
jmp 0x2f71c
mov qword [rax + 0x50], r14
mov qword [rax + 0x58], r14
mov r14d, 0x40
lea rdx, [rbp + 0x838]
mov rcx, rax
mov r8, r14
mov dword [rax], 0x67452301
mov dword [rax + 4], 0xefcdab89
mov dword [rax + 8], 0x98badcfe
mov dword [rax + 0xc], 0x10325476
call fcn.00034fc0
mov r8, r13
mov rdx, r15
mov rcx, r12
call fcn.00034fc0
lea rdx, [rbp + 0x3f8]
mov rcx, r12
call fcn.00035048
mov edx, ebx
mov rcx, r12
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov r8d, ebx
mov rdx, rsi
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov rsi, rax
test rax, rax
je 0x2f4c2
and qword [rax + 0x58], 0
and qword [rax + 0x60], 0
lea rdx, [rbp + 0x838]
mov r8, r14
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
call fcn.0003598c
mov r8, r13
mov rdx, r15
mov rcx, rsi
call fcn.0003598c
lea rdx, [rbp + 0x408]
mov rcx, rsi
call fcn.00035a14
mov edx, ebx
mov rcx, rsi
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
movzx r11d, word [rdi]
lea r8, [rdi + 2]
rol r11w, 8
lea rcx, [rbp + 0x238]
lea rdx, [rbp + 0x3f8]
movzx r9d, r11w
call fcn.00027aa4
mov esi, eax
jmp 0x2f713
mov ecx, 0x303
cmp ax, cx
jne 0x2f70e
cmp rbx, 4
jb 0x2f29b
movzx eax, word [rdi + 2]
rol ax, 8
movzx ecx, ax
add rcx, 4
cmp rbx, rcx
jb 0x2f29b
mov cl, byte [rdi]
call fcn.00028a58
mov rsi, rax
cmp rax, r14
jne 0x2f623
mov eax, 0x20b
jmp 0x2f71c
mov rdx, qword [rax + 0x18]
mov ebx, 0x53534c4d
xor ecx, ecx
and rdx, 0xfffffffffffffff0
mov r8d, ebx
add rdx, 0x10
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov r12, rax
cmp rax, r14
je 0x2f4c2
mov rcx, rax
call qword [rsi + 0x38]
lea rdx, [rbp + 0x838]
mov r8d, 0x40
mov rcx, r12
call qword [rsi + 0x40]
mov r8, r13
mov rdx, r15
mov rcx, r12
call qword [rsi + 0x40]
xor edx, edx
mov rcx, r12
call qword [rsi + 0x48]
mov r11d, dword [rbp + 0x38c]
cmp r11d, 3
je 0x2f68b
cmp r11d, 8
jne 0x2f6c5
cmp byte [rdi + 1], 1
jne 0x2f6c5
movzx eax, word [rdi + 2]
lea rcx, [rbp + 0x238]
test rcx, rcx
je 0x2f6be
rol ax, 8
lea r9, [rdi + 4]
mov r8, r12
movzx eax, ax
mov rdx, rsi
mov qword [rsp + 0x20], rax
call fcn.00025eac
jmp 0x2f6f8
mov esi, 2
jmp 0x2f701
cmp r11d, 5
jne 0x2f6fc
cmp byte [rdi + 1], 2
jne 0x2f6fc
movzx eax, word [rdi + 2]
mov r8, qword [rsi + 0x28]
lea r9, [rdi + 4]
rol ax, 8
movzx edx, ax
mov qword [rsp + 0x20], rdx
lea rcx, [rbp + 0x258]
mov rdx, r12
call fcn.00027d2c
mov esi, eax
jmp 0x2f701
mov esi, 0xf7
mov edx, ebx
mov rcx, r12
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
jmp 0x2f713
mov esi, 0xec
mov dword [rbp], 5
mov eax, esi
mov rbx, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret