Function at 0x18001a780
Capabilities:
Hash data using sha256

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r14
sub rsp, 0x20
mov edi, edx
mov r14d, edx
shr edi, 4
mov rbx, rcx
and edi, 1
test dl, 0x20
jne 0x180018ac7
cmp byte [rcx + 0x248], 0
je 0x180018aca
or edi, 2
lea rsi, [rcx + 0x270]
mov qword [rsp + 0x60], r15
xor ebp, ebp
cmp word [rsi], bp
je 0x180018afe
cmp qword [rcx + 0x260], rbp
je 0x180018c6d
test byte [rcx + 0x374], 2
jne 0x180018afe
mov eax, edi
and eax, 2
jne 0x180018c72
mov rcx, qword [rbx + 0x378]
test rcx, rcx
je 0x180018b74
mov rax, qword [rbx + 0x48]
test rax, rax
jne 0x180018b17
mov rax, qword [rbx + 0x28]
lea rsi, [rcx + rax]
cmp byte [rbx + 0x248], bpl
je 0x180018b3b
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 0xa8]
call qword [case.0x18001b453.0]
test al, al
je 0x180018b45
mov rax, qword [rsi]
mov qword [rbx + 0x228], rax
cmp byte [rbx + 0x248], bpl
je 0x180018b65
mov rax, qword [rbx]
mov rcx, rbx
mov rax, qword [rax + 0xa8]
call qword [case.0x18001b453.0]
test al, al
jne 0x180018b74
bt edi, 1
cmovb rbp, rsi
mov qword [rbx + 0x230], rbp
cmp byte [rbx + 0x248], 0
je 0x180018c0d
cmp qword [rbx + 0x240], 0
je 0x180018c58
cmp qword [rbx + 0x260], 0
jne 0x180018ba9
mov rcx, rbx
call fcn.180018ec0
test al, al
je 0x180018c58
lea rcx, [rbx + 0x380]
cmp qword [rcx], 0xffffffffffffffff
je 0x180018c58
mov rax, qword [rbx + 0x268]
test rax, rax
jne 0x180018bf3
lea r8, [rbx + 0x2f0]
cmp word [r8], ax
je 0x180018bee
xor edx, edx
mov ecx, 0x100002
call qword [sym.imp.KERNEL32.dll_OpenEventW]
mov qword [rbx + 0x268], rax
lea rcx, [rbx + 0x380]
test rax, rax
je 0x180018c58
mov rdx, qword [rbx + 0x48]
test rdx, rdx
jne 0x180018c00
mov rdx, qword [rbx + 0x28]
mov rcx, qword [rcx]
add rcx, rdx
mov qword [rbx + 0x238], rcx
cmp qword [rbx + 8], 0
je 0x180018d80
cmp byte [rbx + 0x248], 0
jne 0x180018d80
cmp qword [rbx + 0x50], 0
jne 0x180018d80
cmp qword [rbx + 0x78], 0
jne 0x180018d3b
mov rax, qword [rbx + 0x58]
lea rcx, [rbx + 0x58]
mov edx, r14d
mov rax, qword [rax + 0x18]
call qword [case.0x18001b453.0]
test eax, eax
je 0x180018d3b
mov eax, 0x1b5b
mov r15, qword [rsp + 0x60]
add rsp, 0x20
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov eax, edi
and eax, 2
test rsi, rsi
je 0x180018d24
test edi, edi
je 0x180018d24
mov ecx, 2
test eax, eax
mov r15d, 4
mov r8, rsi
cmovne r15d, ecx
xor edx, edx
mov ecx, r15d
call qword [sym.imp.KERNEL32.dll_OpenFileMappingW]
test rax, rax
jne 0x180018ccd
mov edx, 0x5c
mov rcx, rsi
call fcn.1800d755c
test rax, rax
je 0x180018c58
lea r8, [rax + 2]
xor edx, edx
mov ecx, r15d
call qword [sym.imp.KERNEL32.dll_OpenFileMappingW]
test rax, rax
je 0x180018c58
lea r9, [rsp + 0x50]
mov r8d, r15d
xor edx, edx
mov rcx, rax
call fcn.180015bf0
mov rsi, rax
test rax, rax
je 0x180018c58
mov rcx, qword [rbx + 0x260]
test rcx, rcx
je 0x180018cfc
call fcn.180015f00
mov rax, qword [rsp + 0x50]
lea rcx, [rbx + 0x20]
mov qword [rbx + 0x48], rax
mov qword [rbx + 0x260], rsi
mov dword [rbx + 0x374], edi
mov qword [rbx + 0x40], rbp
call fcn.1800017a0
jmp 0x180018afe
mov ecx, 0xa
call fcn.180053cf0
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x180018c58
mov rax, qword [rbx + 0x58]
lea rcx, [rbx + 0x58]
mov rax, qword [rax + 0x48]
call qword [case.0x18001b453.0]
cmp rax, 0xffffffffffffffff
jne 0x180018d68
mov eax, 0x1388
mov r15, qword [rsp + 0x60]
add rsp, 0x20
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp qword [rbx + 0x48], 0
mov qword [rbx + 0xc0], rax
jne 0x180018d80
cmp rax, qword [rbx + 0x40]
jge 0x180018d80
mov qword [rbx + 0x40], rax
bt r14d, 0x13
jae 0x180018d8e
mov byte [rbx + 0x248], 1
mov edx, r14d
mov rcx, rbx
mov r15, qword [rsp + 0x60]
add rsp, 0x20
pop r14
pop rdi
pop rsi
pop rbp
pop rbx
jmp method.CTempStream.virtual_24
mov qword [rsp + 0x10], rbx
push rdi
sub rsp, 0x30
cmp dword [rcx + 0xc8], 0
mov edi, edx
mov rbx, rcx
je 0x18001a7a8
mov eax, 0x232d
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov qword [rsp + 0x40], rsi
xor esi, esi
mov dword [rcx + 0xb0], edi
mov qword [rcx + 0xb8], rsi
test dil, 0x20
je 0x18001a8d5
mov r9, qword [rcx + 0x10]
mov qword [rcx + 0x208], 0xffffffffffffffff
test r9, r9
je 0x18001a83f
mov ecx, dword [r9]
test ecx, ecx
je 0x18001a83f
nop dword [rax]
nop word [rax + rax]
mov eax, dword [r9 + 4]
lea rdx, [r9 + 8]
add rdx, rax
cmp ecx, 0xf
je 0x18001a80b
mov ecx, dword [rdx]
mov r9, rdx
test ecx, ecx
jne 0x18001a7f0
jmp 0x18001a83f
mov r8, rdx
test rdx, rdx
jne 0x18001a818
mov r8, rsi
jmp 0x18001a837
cmp dword [rdx], esi
je 0x18001a830
nop dword [rax]
mov eax, dword [r8 + 4]
add r8, 8
add r8, rax
cmp dword [r8], esi
jne 0x18001a820
sub r8, rdx
add r8, 8
mov rcx, r9
call fcn.180100680
mov rcx, qword [rbx + 0x10]
test rcx, rcx
je 0x18001a89c
mov r8d, dword [rcx]
test r8d, r8d
je 0x18001a89c
mov eax, dword [rcx + 4]
lea rdx, [rcx + 8]
add rdx, rax
cmp r8d, 0x29
je 0x18001a86d
mov r8d, dword [rdx]
mov rcx, rdx
test r8d, r8d
jne 0x18001a850
jmp 0x18001a89c
mov r8, rdx
test rdx, rdx
jne 0x18001a87a
mov r8, rsi
jmp 0x18001a897
cmp dword [rdx], esi
je 0x18001a890
nop
mov eax, dword [r8 + 4]
add r8, 8
add r8, rax
cmp dword [r8], esi
jne 0x18001a880
sub r8, rdx
add r8, 8
call fcn.180100680
bt edi, 0x12
jae 0x18001a8b5
lea rcx, [rbx + 0xd0]
call fcn.180001b00
mov qword [rbx + 0x208], rsi
bt edi, 0x19
jae 0x18001a8d5
lea rcx, [rbx + 0x138]
lea rdx, [0x180120bc0]
call fcn.180006920
mov qword [rbx + 0x208], rsi
mov rax, qword [rbx + 0x228]
mov dword [rbx + 0xc8], 1
cmp rax, 0xffffffffffffffff
je 0x18001a90e
mov qword [rbx + 0xc0], rax
cmp qword [rbx + 0x48], rsi
jne 0x18001a903
cmp rax, qword [rbx + 0x40]
jge 0x18001a903
mov qword [rbx + 0x40], rax
mov qword [rbx + 0x228], 0xffffffffffffffff
test dil, dil
jns 0x18001a94b
mov rax, qword [rbx]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
mov rax, qword [rax + 0x38]
call qword [case.0x18001b453.0]
test rax, rax
je 0x18001a94b
mov dword [rbx + 0xc8], esi
mov eax, 0x232a
mov rsi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret
mov rsi, qword [rsp + 0x40]
xor eax, eax
mov rbx, qword [rsp + 0x48]
add rsp, 0x30
pop rdi
ret