Function at 0x401540
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x43c004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov dword [ebp - 0x7c], 0x3c62ba
mov ebx, ecx
mov eax, dword [ebp - 0x7c]
push esi
mov esi, 3
cdq
idiv esi
mov eax, dword [ebp - 0x7c]
lea ecx, [esi + 2]
push edi
lea edi, [esi - 1]
test edx, edx
je 0x4015ac
lea eax, [ebp + eax - 0x1a]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x40158c
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x4015ed
nop
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x4015a8
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x401590
jmp 0x4015ed
and eax, 0x80000001
jns 0x4015ba
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x401642
mov eax, edi
lea ecx, [ebp - 0x1c]
sub eax, ecx
add eax, dword [ebp - 0x7c]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x4015e8
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x4015d7
mov ecx, 5
mov dword [ebp - 0x7c], 0x3c62ba
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x401703
lea eax, [ebp + eax - 0x76]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x40161d
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x4017ee
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x40163b
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x401623
jmp 0x4017ee
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x401653
dec eax
or eax, 0xfffffffc
add eax, 1
mov eax, dword [ebp - 0x7c]
je 0x4016ac
add eax, 2
lea ecx, [ebp - 0x19]
imul eax, ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x401675
dec eax
or eax, 0xfffffffe
add eax, 1
mov ecx, 5
jne 0x4015ed
mov eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x401690
dec eax
jmp 0x401691
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x4016a5
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x401680
jmp 0x4015ed
cdq
idiv ecx
test edx, edx
je 0x4015ed
mov eax, dword [ebp - 0x7c]
lea ecx, [ebp - 5]
add eax, 0xb
cdq
idiv ecx
mov ecx, 5
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x4015ed
nop dword [eax]
mov eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x4016f0
inc eax
jmp 0x4016f1
dec eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x4016e0
jmp 0x4015ed
and eax, 0x80000001
jns 0x401711
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x401746
mov eax, edi
lea ecx, [ebp - 0x78]
sub eax, ecx
add eax, dword [ebp - 0x7c]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x4017ee
nop
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x401730
jmp 0x4017ee
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x401757
dec eax
or eax, 0xfffffffc
add eax, 1
mov eax, dword [ebp - 0x7c]
je 0x4017a9
add eax, 2
lea ecx, [ebp - 0x75]
imul eax, ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x401779
dec eax
or eax, 0xfffffffe
add eax, 1
jne 0x4017ee
mov ecx, 5
mov eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x401790
dec eax
jmp 0x401791
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x4017a5
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x401780
jmp 0x4017ee
cdq
idiv ecx
test edx, edx
je 0x4017ee
mov eax, dword [ebp - 0x7c]
lea ecx, [ebp - 0x61]
add eax, 0xb
cdq
idiv ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x4017ee
mov ecx, 5
nop
mov eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x4017e0
inc eax
jmp 0x4017e1
dec eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x4017d0
mov dword [ebp - 0x64], 0
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x68], 0
mov edx, ebx
mov dword [ebp - 0x78], 0x67452301
mov dword [ebp - 0x74], 0xefcdab89
mov dword [ebp - 0x70], 0x98badcfe
mov dword [ebp - 0x6c], 0x10325476
push 0x20
mov dword [ebp - 0x7c], 0x3c62ba
call fcn.00403710
add esp, 4
mov dword [ebp - 0x7c], 0x3c62ba
xor edx, edx
lea ecx, [ebp - 0x67]
nop word [eax + eax]
movzx eax, byte [ecx - 1]
lea ecx, [ecx + 4]
mov byte [ebp + edx - 0xc], al
movzx eax, byte [ecx - 4]
mov byte [ebp + edx - 0xb], al
movzx eax, byte [ecx - 3]
mov byte [ebp + edx - 0xa], al
movzx eax, byte [ecx - 2]
mov byte [ebp + edx - 9], al
add edx, 4
cmp edx, 8
jb 0x401840
mov edx, dword [ebp - 0x68]
mov ecx, 0x78
shr edx, 3
mov eax, 0x38
and edx, 0x3f
sub ecx, edx
sub eax, edx
cmp edx, 0x38
mov edx, 0x43e4a8
cmovae eax, ecx
lea ecx, [ebp - 0x78]
push eax
call fcn.00403710
push 8
lea edx, [ebp - 0xc]
lea ecx, [ebp - 0x78]
call fcn.00403710
add esp, 8
lea ecx, [ebp - 0x77]
xor edx, edx
nop dword [eax + eax]
movzx eax, byte [ecx - 1]
lea ecx, [ecx + 4]
mov byte [ebp + edx - 0x1c], al
movzx eax, byte [ecx - 4]
mov byte [ebp + edx - 0x1b], al
movzx eax, byte [ecx - 3]
mov byte [ebp + edx - 0x1a], al
movzx eax, byte [ecx - 2]
mov byte [ebp + edx - 0x19], al
add edx, 4
cmp edx, 0x10
jb 0x4018b0
push 0x58
lea eax, [ebp - 0x78]
push 0
push eax
call fcn.00428c80
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x7c], 0x3c62ba
mov esi, ebx
mov eax, ecx
add esp, 0xc
mov edx, 4
sub esi, eax
mov eax, dword [ecx]
lea ecx, [ecx + 4]
mov dword [esi + ecx - 4], eax
sub edx, 1
jne 0x401900
mov dword [ebp - 0x7c], 0x3c62ba
mov esi, 3
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x401965
add eax, 2
add eax, ebx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x401940
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x401a4f
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x40195e
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x401946
jmp 0x401a4f
and eax, 0x80000001
jns 0x401973
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x4019a6
sub edi, ebx
add edi, dword [ebp - 0x7c]
mov dword [ebp - 0x7c], edi
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x401a4f
nop dword [eax + eax]
mov eax, dword [ebp - 0x7c]
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x401990
jmp 0x401a4f
mov eax, dword [ebp - 0x7c]
and eax, 0x80000003
jns 0x4019b7
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x401a09
mov ecx, dword [ebp - 0x7c]
lea eax, [ebx + 3]
add ecx, edi
imul ecx, eax
mov dword [ebp - 0x7c], ecx
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x4019d8
dec eax
or eax, 0xfffffffe
add eax, 1
jne 0x401a4f
mov ecx, 5
nop
mov eax, dword [ebp - 0x7c]
cdq
idiv ecx
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x4019f0
dec eax
jmp 0x4019f1
inc eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
and eax, 0x80000001
jns 0x401a05
dec eax
or eax, 0xfffffffe
add eax, 1
je 0x4019e0
jmp 0x401a4f
mov eax, dword [ebp - 0x7c]
mov edi, 5
cdq
idiv edi
test edx, edx
je 0x401a4f
mov eax, dword [ebp - 0x7c]
lea ecx, [ebx + 0x17]
add eax, 0xb
cdq
idiv ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
jne 0x401a4f
mov eax, dword [ebp - 0x7c]
cdq
idiv edi
mov eax, dword [ebp - 0x7c]
test edx, edx
je 0x401a41
inc eax
jmp 0x401a42
dec eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x7c]
cdq
idiv esi
test edx, edx
je 0x401a31
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004279e2
mov esp, ebp
pop ebp
ret