Function at 0x10003516
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x74
push ebx
mov ebx, edx
mov dword [ebp - 0x28], ecx
push esi
push edi
mov dword [ebp - 0x1c], 0x67452301
lea eax, [ebx + 1]
mov dword [ebp - 8], 0xefcdab89
mov esi, eax
mov dword [ebp - 0x2c], eax
and eax, 0x3f
mov dword [ebp - 0xc], 0x98badcfe
mov dword [ebp - 0x10], 0x10325476
cmp al, 0x38
je 0x1000355c
inc esi
mov eax, esi
and eax, 0x3f
cmp al, 0x38
jne 0x1000354f
mov dword [ebp - 0x2c], esi
xor ecx, ecx
mov eax, esi
add eax, 8
setb cl
neg ecx
or ecx, eax
push ecx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
push ebx
push dword [ebp - 0x28]
mov edi, eax
push edi
mov dword [ebp - 0x34], edi
call sub.VCRUNTIME140.dll_memcpy
lea ecx, [ebx + 1]
mov byte [edi + ebx], 0x80
add esp, 0x10
cmp ecx, esi
jae 0x100035a1
mov eax, esi
sub eax, ecx
push eax
lea eax, [ecx + edi]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, ebx
shr ebx, 0x1d
shl ecx, 3
mov eax, ecx
mov byte [esi + edi], cl
shr eax, 8
mov byte [esi + edi + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + edi + 2], al
mov eax, ebx
shr eax, 8
shr ecx, 0x18
mov byte [esi + edi + 3], cl
mov byte [esi + edi + 5], al
mov eax, ebx
shr eax, 0x10
mov byte [esi + edi + 4], bl
mov byte [esi + edi + 6], al
xor eax, eax
shr ebx, 0x18
mov byte [esi + edi + 7], bl
mov dword [ebp - 0x28], eax
test esi, esi
je 0x10003708
lea edx, [eax + 2]
xor ebx, ebx
add edx, edi
movzx ecx, byte [edx + 1]
movzx eax, byte [edx]
lea edx, [edx + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx - 6]
shl ecx, 8
or ecx, eax
mov dword [ebp + ebx*4 - 0x74], ecx
inc ebx
cmp ebx, 0x10
jb 0x100035f6
mov ebx, dword [ebp - 0x1c]
xor eax, eax
and dword [ebp - 0x18], eax
xor edi, edi
mov edx, dword [ebp - 8]
inc edi
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp - 0x10]
mov dword [ebp - 4], eax
mov dword [ebp - 0x14], 5
mov dword [ebp - 0x24], edi
cmp eax, 0x10
jae 0x1000365b
mov ecx, edx
mov eax, esi
not ecx
and eax, edx
and ecx, ebx
or ecx, eax
mov eax, dword [ebp - 4]
jmp 0x1000368a
mov ecx, ebx
cmp eax, 0x20
jae 0x10003670
not ecx
mov eax, ebx
and eax, edx
and ecx, esi
or ecx, eax
mov eax, edi
jmp 0x10003687
cmp eax, 0x30
jae 0x1000367e
mov eax, dword [ebp - 0x14]
xor ecx, esi
xor ecx, edx
jmp 0x10003687
mov eax, dword [ebp - 0x18]
not ecx
or ecx, edx
xor ecx, esi
and eax, 0xf
mov edi, dword [ebp - 4]
mov eax, dword [ebp + eax*4 - 0x74]
add dword [ebp - 0x14], 3
add dword [ebp - 0x18], 7
add eax, dword [edi*4 + 0x100054b8]
add eax, ecx
mov dword [ebp - 0x30], ebx
add eax, dword [ebp - 0x20]
mov ecx, edi
mov ebx, esi
mov esi, edx
mov ecx, dword [ecx*4 + 0x100055b8]
rol eax, cl
mov ecx, dword [ebp - 0x30]
add edx, eax
mov eax, edi
mov dword [ebp - 0x20], ecx
mov edi, dword [ebp - 0x24]
inc eax
add edi, 5
mov dword [ebp - 4], eax
mov dword [ebp - 0x24], edi
cmp edi, 0x141
jb 0x10003645
add dword [ebp - 8], edx
add dword [ebp - 0xc], esi
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x30], ebx
mov eax, dword [ebp - 0x30]
add dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x1c]
add eax, 0x40
add ebx, ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x1c], ebx
cmp eax, dword [ebp - 0x2c]
jb 0x100035ef
jmp 0x1000370d
mov ebx, 0x67452301
push edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov edx, dword [ebp - 8]
mov eax, ebx
shr eax, 8
pop ecx
mov ecx, dword [ebp + 8]
pop edi
pop esi
mov byte [ecx + 1], al
mov eax, ebx
shr eax, 0x10
mov byte [ecx + 2], al
mov eax, edx
shr eax, 8
mov byte [ecx + 5], al
mov eax, edx
shr eax, 0x10
mov byte [ecx + 4], dl
mov byte [ecx + 6], al
shr edx, 0x18
mov byte [ecx + 7], dl
mov edx, dword [ebp - 0xc]
mov eax, edx
shr eax, 8
mov byte [ecx + 9], al
mov eax, edx
shr eax, 0x10
mov byte [ecx + 8], dl
shr edx, 0x18
mov byte [ecx + 0xa], al
mov byte [ecx + 0xb], dl
mov edx, dword [ebp - 0x10]
mov eax, edx
shr eax, 8
mov byte [ecx + 0xd], al
mov eax, edx
mov byte [ecx], bl
shr ebx, 0x18
shr eax, 0x10
mov byte [ecx + 0xc], dl
shr edx, 0x18
mov byte [ecx + 3], bl
mov byte [ecx + 0xe], al
mov byte [ecx + 0xf], dl
pop ebx
leave
ret