Function at 0x140001310
Capabilities:
Hash data with md5

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov edi, edx
mov esi, 0xefcdab89
mov ebp, 0x98badcfe
mov dword [rsp + 0xd8], esi
mov r14d, 0x10325476
mov dword [rsp + 0x20], ebp
mov r12, r8
mov dword [rsp + 0xc8], r14d
lea eax, [rdi + 1]
mov r13d, 0x67452301
mov r15d, eax
and eax, 0x3f
cmp al, 0x38
je 0x14000137d
nop word [rax + rax]
inc r15d
mov eax, r15d
and eax, 0x3f
cmp al, 0x38
jne 0x140001370
mov rax, 0xffffffffffffffff
mov ecx, r15d
add rcx, 8
cmovb rcx, rax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [rsp + 0x28], rax
test rax, rax
je 0x140001a37
mov rdx, qword [rsp + 0xc0]
mov r8, rdi
mov rcx, rax
mov qword [rsp + 0x78], rbx
call sub.VCRUNTIME140.dll_memcpy
mov r9, qword [rsp + 0x28]
lea edx, [rdi + 1]
mov byte [rdi + r9], 0x80
cmp edx, r15d
jae 0x1400013e4
mov ecx, edx
mov r8d, r15d
sub r8d, edx
add rcx, r9
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r9, qword [rsp + 0x28]
mov edx, r15d
lea ecx, [rdi*8]
shr edi, 0x1d
mov eax, ecx
shr eax, 8
mov byte [rdx + r9 + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [rdx + r9 + 2], al
mov eax, edi
mov byte [rdx + r9], cl
shr eax, 8
shr ecx, 0x18
mov byte [rdx + r9 + 3], cl
mov byte [rdx + r9 + 5], al
mov eax, edi
shr eax, 0x10
mov byte [rdx + r9 + 6], al
xor eax, eax
mov byte [rdx + r9 + 4], dil
shr edi, 0x18
mov byte [rdx + r9 + 7], dil
mov dword [rsp + 0x24], eax
test r15d, r15d
je 0x1400019a0
mov r12d, r14d
movzx ecx, byte [rax + r9 + 3]
shl ecx, 8
mov edx, eax
movzx eax, byte [rax + r9 + 2]
or ecx, eax
shl ecx, 8
movzx eax, byte [rdx + r9 + 1]
or ecx, eax
movzx eax, byte [rdx + r9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 6]
mov dword [rsp + 0x30], ecx
movzx ecx, byte [rdx + r9 + 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xa]
mov dword [rsp + 0x34], ecx
movzx ecx, byte [rdx + r9 + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xe]
mov dword [rsp + 0x38], ecx
movzx ecx, byte [rdx + r9 + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0xc]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x12]
mov dword [rsp + 0x3c], ecx
movzx ecx, byte [rdx + r9 + 0x13]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x11]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x10]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x16]
mov dword [rsp + 0x40], ecx
movzx ecx, byte [rdx + r9 + 0x17]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x15]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x14]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1a]
mov dword [rsp + 0x44], ecx
movzx ecx, byte [rdx + r9 + 0x1b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x19]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x18]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1e]
mov dword [rsp + 0x48], ecx
movzx ecx, byte [rdx + r9 + 0x1f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x1c]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x22]
mov dword [rsp + 0x4c], ecx
movzx ecx, byte [rdx + r9 + 0x23]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x21]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x20]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x26]
mov dword [rsp + 0x50], ecx
movzx ecx, byte [rdx + r9 + 0x27]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x25]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x24]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2a]
mov dword [rsp + 0x54], ecx
movzx ecx, byte [rdx + r9 + 0x2b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x29]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x28]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2e]
mov dword [rsp + 0x58], ecx
movzx ecx, byte [rdx + r9 + 0x2f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x2c]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x32]
mov dword [rsp + 0x5c], ecx
movzx ecx, byte [rdx + r9 + 0x33]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x31]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x30]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x36]
mov dword [rsp + 0x60], ecx
movzx ecx, byte [rdx + r9 + 0x37]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x35]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x34]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3a]
mov dword [rsp + 0x64], ecx
movzx ecx, byte [rdx + r9 + 0x3b]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x39]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x38]
mov r11d, r12d
shl ecx, 8
lea r12, [0x140000000]
or ecx, eax
mov ebx, r13d
movzx eax, byte [rdx + r9 + 0x3e]
mov edi, ebp
mov dword [rsp + 0x68], ecx
movzx ecx, byte [rdx + r9 + 0x3f]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3d]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdx + r9 + 0x3c]
shl ecx, 8
xor r9d, r9d
or ecx, eax
mov eax, esi
mov dword [rsp + 0x6c], ecx
xor r14d, r14d
nop dword [rax]
cmp r9d, 0x10
jae 0x14000172b
mov r10d, eax
mov ecx, edi
not r10d
and ecx, eax
and r10d, r11d
or r10d, ecx
mov ecx, r9d
jmp 0x140001778
mov r10d, r11d
cmp r9d, 0x20
jae 0x14000174f
not r10d
mov ecx, r11d
and ecx, eax
and r10d, edi
or r10d, ecx
lea ecx, [r9*4 + 1]
add ecx, r9d
jmp 0x140001775
cmp r9d, 0x30
jae 0x140001768
xor r10d, edi
lea ecx, [r9*2 + 5]
xor r10d, eax
add ecx, r9d
jmp 0x140001775
not r10d
or r10d, eax
xor r10d, edi
imul ecx, r9d, 7
and ecx, 0xf
mov edx, ecx
lea ebp, [r9 + 2]
movzx ecx, byte [r14 + r12 + 0x1a6a0]
mov esi, eax
mov r8d, dword [rsp + rdx*4 + 0x30]
lea edx, [rbp - 1]
add r8d, dword [r14 + r12 + 0x1a5a0]
add r8d, r10d
add r8d, ebx
rol r8d, cl
add eax, r8d
cmp edx, 0x10
jae 0x1400017bc
mov r10d, eax
mov ecx, esi
not r10d
and ecx, eax
and r10d, edi
or r10d, ecx
jmp 0x140001806
mov r10d, edi
cmp edx, 0x20
jae 0x1400017de
not r10d
lea edx, [r9*4 + 6]
and r10d, esi
mov ecx, edi
and ecx, eax
or r10d, ecx
add edx, r9d
jmp 0x140001803
cmp edx, 0x30
jae 0x1400017f3
xor r10d, esi
lea edx, [r9 - 4]
xor r10d, eax
lea edx, [r9 + rdx*2]
jmp 0x140001803
not r10d
lea ecx, [r9 + 1]
or r10d, eax
xor r10d, esi
imul edx, ecx, 7
and edx, 0xf
mov r8d, dword [rsp + rdx*4 + 0x30]
mov ebx, eax
add r8d, dword [r14 + r12 + 0x1a5a4]
movzx ecx, byte [r14 + r12 + 0x1a6a4]
add r8d, r10d
add r8d, r11d
rol r8d, cl
add eax, r8d
cmp ebp, 0x10
jae 0x140001843
mov r10d, eax
mov ecx, ebx
not r10d
and ecx, eax
and r10d, esi
or r10d, ecx
mov ecx, ebp
jmp 0x14000188c
mov r10d, esi
cmp ebp, 0x20
jae 0x140001861
not r10d
mov ecx, esi
and ecx, eax
and r10d, ebx
or r10d, ecx
lea ecx, [r9 - 1]
lea ecx, [rcx + rcx*4]
jmp 0x140001889
cmp ebp, 0x30
jae 0x140001879
xor r10d, ebx
lea ecx, [r9*2 - 5]
xor r10d, eax
add ecx, r9d
jmp 0x140001889
not r10d
imul ecx, r9d, 7
or r10d, eax
xor r10d, ebx
sub ecx, 2
and ecx, 0xf
mov edx, ecx
mov r11d, eax
movzx ecx, byte [r14 + r12 + 0x1a6a8]
mov r8d, dword [rsp + rdx*4 + 0x30]
lea edx, [rbp + 1]
add r8d, dword [r14 + r12 + 0x1a5a8]
add r8d, r10d
add r8d, edi
rol r8d, cl
add eax, r8d
cmp edx, 0x10
jae 0x1400018ce
mov r10d, eax
mov ecx, r11d
not r10d
and ecx, eax
and r10d, ebx
or r10d, ecx
jmp 0x140001911
mov r10d, ebx
cmp edx, 0x20
jae 0x1400018e9
not r10d
lea edx, [r9 + r9*4]
mov ecx, ebx
and r10d, r11d
and ecx, eax
or r10d, ecx
jmp 0x14000190e
cmp edx, 0x30
jae 0x1400018fe
xor r10d, r11d
lea edx, [r9 - 1]
xor r10d, eax
lea edx, [r9 + rdx*2]
jmp 0x14000190e
not r10d
imul edx, r9d, 7
or r10d, eax
xor r10d, r11d
add edx, 5
and edx, 0xf
movzx ecx, byte [r14 + r12 + 0x1a6ac]
mov edi, eax
mov r8d, dword [rsp + rdx*4 + 0x30]
add r9d, 4
add r8d, dword [r14 + r12 + 0x1a5ac]
add r14, 0x10
add r8d, r10d
add r8d, esi
rol r8d, cl
add eax, r8d
cmp r9d, 0x40
jb 0x140001710
mov esi, dword [rsp + 0xd8]
add r13d, ebx
mov ebp, dword [rsp + 0x20]
add esi, eax
mov eax, dword [rsp + 0x24]
add ebp, edi
mov r12d, dword [rsp + 0xc8]
add eax, 0x40
mov r9, qword [rsp + 0x28]
add r12d, r11d
mov dword [rsp + 0xd8], esi
mov dword [rsp + 0x20], ebp
mov dword [rsp + 0xc8], r12d
mov dword [rsp + 0x24], eax
cmp eax, r15d
jb 0x140001444
mov r12, qword [rsp + 0xd0]
mov r14d, dword [rsp + 0xc8]
mov rcx, r9
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rbx, qword [rsp + 0x78]
mov eax, r13d
shr eax, 8
mov byte [r12 + 1], al
mov eax, r13d
shr eax, 0x10
mov byte [r12 + 2], al
mov eax, esi
shr eax, 8
mov byte [r12 + 5], al
mov eax, esi
shr eax, 0x10
mov byte [r12 + 6], al
mov eax, ebp
shr eax, 8
mov byte [r12 + 9], al
mov eax, ebp
shr eax, 0x10
mov byte [r12 + 0xa], al
mov eax, r14d
shr eax, 8
mov byte [r12 + 0xd], al
mov eax, r14d
shr eax, 0x10
mov byte [r12], r13b
shr r13d, 0x18
mov byte [r12 + 4], sil
shr esi, 0x18
mov byte [r12 + 8], bpl
shr ebp, 0x18
mov byte [r12 + 0xc], r14b
shr r14d, 0x18
mov byte [r12 + 0xf], r14b
mov byte [r12 + 3], r13b
mov byte [r12 + 7], sil
mov byte [r12 + 0xb], bpl
mov byte [r12 + 0xe], al
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret