Function at 0x180037650
Capabilities:
Hash data using sha1

Disassembly:
mov r11, rsp
push rbp
push rdi
push r14
push r15
lea rbp, [r11 - 0x2a8]
sub rsp, 0x388
mov rax, qword [0x1800eb008]
xor rax, rsp
mov qword [rbp + 0x260], rax
cmp byte [rdx], 0
mov r15, r8
mov qword [rsp + 0x38], r8
mov r14, rdx
mov qword [rsp + 0x40], rdx
mov rdi, rcx
je 0x180037d9c
cmp byte [rbp + 0x2d0], 0
mov qword [r11 + 0x18], rbx
mov qword [r11 - 0x28], rsi
mov qword [r11 - 0x38], r13
je 0x18003789a
cmp dword [0x1800f00f4], 0
jne 0x1800376bb
call fcn.180035990
mov rdx, r14
mov rcx, rdi
call fcn.180037dc0
xor edx, edx
mov dword [rdi + 0x204], 0xd3a3b879
mov r8d, 0x80
mov dword [rdi + 0x208], 0x3f6d12f7
lea rcx, [rbp - 0x30]
mov dword [rdi + 0x20c], 0x7515a235
mov dword [rdi + 0x210], 0xa4e7f123
call fcn.18008c000
or r13, 0xffffffffffffffff
mov r8, r13
inc r8
cmp byte [r14 + r8], 0
jne 0x180037706
lea rdx, [rbp - 0x30]
mov rcx, r14
call qword [sym.imp.USER32.dll_CharToOemBuffA]
nop dword [rax]
inc r13
cmp byte [r14 + r13], 0
jne 0x180037720
lea rax, [rdi + 0x104]
mov edx, 2
lea rcx, [0x1800ec2b0]
nop dword [rax]
lea rax, [rax + 0x80]
movups xmm0, xmmword [rcx]
lea rcx, [rcx + 0x80]
movups xmmword [rax - 0x80], xmm0
movups xmm1, xmmword [rcx - 0x70]
movups xmmword [rax - 0x70], xmm1
movups xmm0, xmmword [rcx - 0x60]
movups xmmword [rax - 0x60], xmm0
movups xmm1, xmmword [rcx - 0x50]
movups xmmword [rax - 0x50], xmm1
movups xmm0, xmmword [rcx - 0x40]
movups xmmword [rax - 0x40], xmm0
movups xmm1, xmmword [rcx - 0x30]
movups xmmword [rax - 0x30], xmm1
movups xmm0, xmmword [rcx - 0x20]
movups xmmword [rax - 0x20], xmm0
movups xmm1, xmmword [rcx - 0x10]
movups xmmword [rax - 0x10], xmm1
sub rdx, 1
jne 0x180037740
xor eax, eax
movsxd r15, r13d
mov r14d, eax
lea r8, [0x180000000]
nop dword [rax]
nop word [rax + rax]
mov r11d, eax
mov rbx, rax
test r13d, r13d
jle 0x180037853
nop
movzx eax, byte [rbp + rbx - 0x30]
mov r10d, 1
sub eax, r14d
movzx ecx, al
movzx eax, byte [r8 + rcx*4 + 0xf00f0]
movzx ecx, byte [rbp + rbx - 0x2f]
add ecx, r14d
movzx edx, cl
movzx esi, byte [r8 + rdx*4 + 0xf00f0]
cmp eax, esi
je 0x180037840
nop dword [rax]
nop word [rax + rax]
movzx r8d, byte [rax + rdi + 0x104]
lea ecx, [r10 + rax]
add ecx, r11d
lea r10d, [r10 + 1]
movzx r9d, cl
movzx ecx, byte [r9 + rdi + 0x104]
mov byte [rax + rdi + 0x104], cl
inc eax
movzx eax, al
mov byte [r9 + rdi + 0x104], r8b
cmp eax, esi
jne 0x180037800
lea r8, [0x180000000]
add r11d, 2
add rbx, 2
cmp rbx, r15
jl 0x1800377c0
xor eax, eax
inc r14d
cmp r14d, 0x100
jl 0x1800377b0
test r13d, r13d
jle 0x180037d84
lea esi, [r13 - 1]
shr esi, 4
lea rbx, [rbp - 0x30]
inc esi
nop dword [rax]
mov rdx, rbx
mov rcx, rdi
call fcn.1800371f0
add rbx, 0x10
sub rsi, 1
jne 0x180037880
jmp 0x180037d84
xor esi, esi
mov qword [rsp + 0x378], r12
movzx r12d, byte [rbp + 0x2d8]
lea r9, [0x1800f06d0]
mov r10d, esi
lea rbx, [0x180000000]
nop dword [rax]
movsxd rax, r10d
mov r8, r14
imul r11, rax, 0xaa
lea rax, [rbx + 0xf0650]
add rax, r11
sub r8, rax
nop word [rax + rax]
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x1800378f3
inc rax
test ecx, ecx
jne 0x1800378e0
test edx, edx
jne 0x18003791f
test r15, r15
jne 0x180037903
cmp byte [r9], sil
je 0x180037915
jmp 0x18003791f
cmp byte [r9], sil
je 0x18003791f
mov rax, qword [r11 + rbx + 0xf06d1]
cmp rax, qword [r15]
jne 0x18003791f
cmp byte [r9 + 9], r12b
je 0x180037ac1
inc r10d
add r9, 0xaa
cmp r10d, 4
jb 0x1800378c0
lea rax, [rbp + 0x160]
mov dword [rsp + 0x28], 0x7f
or r9, 0xffffffffffffffff
mov qword [rsp + 0x20], rax
mov r8, r14
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea r8, [rbp + 0x160]
mov word [rbp + 0x25e], si
mov rdx, rsi
nop word [rax + rax]
movzx eax, byte [r8]
movzx ecx, word [r8]
mov byte [rbp + rdx*2 + 0x50], al
movzx eax, cx
shr ax, 8
mov byte [rbp + rdx*2 + 0x51], al
test cx, cx
je 0x18003799c
inc rdx
add r8, 2
cmp rdx, 0x1000000
jl 0x180037970
mov ecx, esi
lea rax, [rbp + 0x160]
cmp word [rbp + 0x160], cx
je 0x1800379bb
nop
lea rax, [rax + 2]
inc ecx
cmp word [rax], si
jne 0x1800379b0
mov rax, qword [rsp + 0x38]
lea r15d, [rcx + rcx]
test rax, rax
je 0x1800379d8
mov rax, qword [rax]
movsxd rcx, r15d
add r15d, 8
mov qword [rbp + rcx + 0x50], rax
mov eax, r15d
mov dword [rsp + 0x50], 0x67452301
shr eax, 0x1d
lea r14d, [r15*8]
mov dword [rsp + 0x34], eax
mov ecx, esi
mov dword [rsp + 0x54], 0xefcdab89
mov edx, esi
mov dword [rsp + 0x58], 0x98badcfe
mov r13d, esi
mov dword [rsp + 0x5c], 0x10325476
mov dword [rsp + 0x60], 0xc3d2e1f0
nop dword [rax]
mov r9d, edx
add edx, r14d
shr r9d, 3
and r9d, 0x3f
mov dword [rsp + 0x64], edx
cmp edx, r14d
jae 0x180037a39
inc ecx
add ecx, eax
lea eax, [r9 + r15]
mov dword [rsp + 0x68], ecx
cmp eax, 0x3f
jbe 0x180037af6
mov eax, r9d
lea rcx, [rsp + 0x6c]
mov ebx, 0x40
lea rdx, [rbp + 0x50]
sub ebx, r9d
add rcx, rax
mov r8d, ebx
call fcn.18008b7d0
movzx r8d, r12b
lea rdx, [rsp + 0x6c]
lea rcx, [rsp + 0x50]
call fcn.18003b620
lea esi, [rbx + 0x3f]
cmp esi, r15d
jae 0x180037ab2
nop word [rax + rax]
mov eax, ebx
lea rdx, [rbp + 0x50]
add rdx, rax
lea rcx, [rsp + 0x50]
movzx r8d, r12b
call fcn.18003b620
add ebx, 0x40
add esi, 0x40
cmp esi, r15d
jb 0x180037a90
mov ecx, dword [rsp + 0x68]
xor esi, esi
mov edx, dword [rsp + 0x64]
mov r9d, esi
jmp 0x180037af8
movsxd rax, r10d
lea r8, [rdi + 0x21f]
imul rcx, rax, 0xaa
lea r9, [rdi + 0x22f]
movups xmm0, xmmword [rcx + rbx + 0xf0630]
movups xmmword [r8], xmm0
movups xmm0, xmmword [rcx + rbx + 0xf0640]
movups xmmword [r9], xmm0
jmp 0x180037d6f
mov ebx, esi
cmp r15d, ebx
jbe 0x180037b24
mov eax, ebx
lea rdx, [rbp + 0x50]
add rdx, rax
lea rcx, [rsp + 0x6c]
mov eax, r9d
mov r8d, r15d
add rcx, rax
sub r8d, ebx
call fcn.18008b7d0
mov ecx, dword [rsp + 0x68]
mov edx, dword [rsp + 0x64]
mov r9d, edx
mov byte [rsp + 0x30], r13b
shr r9d, 3
add edx, 0x18
mov eax, r13d
mov dword [rsp + 0x64], edx
sar eax, 8
and r9d, 0x3f
mov byte [rsp + 0x31], al
mov eax, r13d
sar eax, 0x10
mov byte [rsp + 0x32], al
cmp edx, 0x18
jae 0x180037b5a
inc ecx
mov dword [rsp + 0x68], ecx
lea eax, [r9 + 3]
cmp eax, 0x3f
jbe 0x180037bcf
mov eax, r9d
lea rcx, [rsp + 0x6c]
mov ebx, 0x40
lea rdx, [rsp + 0x30]
sub ebx, r9d
add rcx, rax
mov r8d, ebx
call fcn.18008b7d0
movzx r8d, r12b
lea rdx, [rsp + 0x6c]
lea rcx, [rsp + 0x50]
call fcn.18003b620
lea esi, [rbx + 0x3f]
cmp esi, 3
jae 0x180037bc3
nop
mov eax, ebx
lea rdx, [rsp + 0x30]
add rdx, rax
lea rcx, [rsp + 0x50]
movzx r8d, r12b
call fcn.18003b620
add ebx, 0x40
add esi, 0x40
cmp esi, 3
jb 0x180037ba0
xor esi, esi
mov r9d, esi
cmp ebx, 3
jae 0x180037bf4
jmp 0x180037bd1
mov ebx, esi
mov eax, ebx
lea rdx, [rsp + 0x30]
add rdx, rax
lea rcx, [rsp + 0x6c]
mov eax, r9d
mov r8d, 3
add rcx, rax
sub r8d, ebx
call fcn.18008b7d0
mov eax, r13d
cdq
and edx, 0x3fff
add eax, edx
mov ebx, eax
and eax, 0x3fff
sar ebx, 0xe
cmp eax, edx
jne 0x180037c68
movaps xmm0, xmmword [rsp + 0x50]
lea rdx, [rbp - 0x50]
movaps xmm1, xmmword [rsp + 0x60]
lea rcx, [rbp - 0x30]
mov eax, dword [rbp - 0x58]
movzx r8d, r12b
movaps xmmword [rbp - 0x30], xmm0
movaps xmm0, xmmword [rsp + 0x70]
movaps xmmword [rbp - 0x20], xmm1
movaps xmm1, xmmword [rbp - 0x80]
movaps xmmword [rbp - 0x10], xmm0
movaps xmm0, xmmword [rbp - 0x70]
movaps xmmword [rbp], xmm1
movsd xmm1, qword [rbp - 0x60]
movaps xmmword [rbp + 0x10], xmm0
movsd qword [rbp + 0x20], xmm1
mov dword [rbp + 0x28], eax
call fcn.18003c980
movzx eax, byte [rbp - 0x40]
movsxd rcx, ebx
mov byte [rcx + rdi + 0x22f], al
inc r13d
cmp r13d, 0x40000
jge 0x180037c85
mov ecx, dword [rsp + 0x68]
mov edx, dword [rsp + 0x64]
mov eax, dword [rsp + 0x34]
jmp 0x180037a20
movzx r8d, r12b
lea rdx, [rbp - 0x50]
lea rcx, [rsp + 0x50]
call fcn.18003c980
mov r14, qword [rsp + 0x40]
lea r9, [rbp - 0x50]
sub r9, rdi
lea rdx, [rdi + 0x220]
mov r8d, 4
mov ecx, dword [r9 + rdx - 0x220]
mov eax, ecx
shr eax, 8
mov byte [rdx], al
mov eax, ecx
mov byte [rdx - 1], cl
lea rdx, [rdx + 4]
shr eax, 0x10
shr ecx, 0x18
mov byte [rdx - 3], al
mov byte [rdx - 2], cl
sub r8, 1
jne 0x180037cb0
movsxd r10, dword [0x1800f04f0]
lea r11, [0x180000000]
imul rdx, r10, 0xaa
lea rcx, [r11 + 0xf0650]
mov rax, rdx
sub rax, r14
add rcx, rax
nop
movzx eax, byte [r14]
mov byte [rcx + r14], al
lea r14, [r14 + 1]
test al, al
jne 0x180037d00
mov rcx, qword [rsp + 0x38]
test rcx, rcx
setne al
mov byte [rdx + r11 + 0xf06d0], al
cmp al, 1
jne 0x180037d32
mov rax, qword [rcx]
mov qword [rdx + r11 + 0xf06d1], rax
mov byte [rdx + r11 + 0xf06d9], r12b
lea r8, [rdi + 0x21f]
movups xmm0, xmmword [r8]
lea r9, [rdi + 0x22f]
lea eax, [r10 + 1]
movups xmmword [rdx + r11 + 0xf0630], xmm0
and eax, 3
movups xmm0, xmmword [r9]
mov dword [0x1800f04f0], eax
movups xmmword [rdx + r11 + 0xf0640], xmm0
mov edx, 1
mov rcx, rdi
call fcn.180035f10
mov r12, qword [rsp + 0x378]
mov rsi, qword [rsp + 0x380]
mov rbx, qword [rsp + 0x3c0]
mov r13, qword [rsp + 0x370]
mov rcx, qword [rbp + 0x260]
xor rcx, rsp
call fcn.180072920
add rsp, 0x388
pop r15
pop r14
pop rdi
pop rbp
ret