Function at 0x41ba90
Capabilities:
Hash data with md5

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b4648
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0x490
push esi
mov esi, dword [ebx + 0xc]
shl esi, 4
push edi
mov edi, ecx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x18], edi
lea eax, [esi + 0x10]
cmp eax, dword [edi]
jbe 0x41bb23
mov ecx, 0x4e9108
mov dword [ebp - 0x34], 0x4e9108
call fcn.00432940
mov dword [ebp - 0x30], eax
mov dword [ebp - 4], 0
cmp eax, 1
jne 0x41bb12
push 0
push 0x4c87fe
push 0x4c87fe
push str._size_t_blockIndex__Blizzard::Util::MD5::SIZE__Blizzard::Util::MD5::SIZE___m_md5buffer.Size__
call fcn.0042d5c0
add esp, 0x10
mov ecx, 0x4e9108
mov dword [ebp - 4], 0xffffffff
call fcn.00432950
mov eax, dword [ebx + 0x14]
lea edx, [ebp - 0x2c]
mov ecx, dword [edi + 4]
add ecx, esi
mov byte [eax], 0
lea eax, [ecx + 0x10]
cmp edx, eax
jae 0x41bb4f
lea eax, [ebp - 0x1c]
cmp eax, ecx
jbe 0x41bb4f
push 0x10
push ecx
mov eax, edx
push eax
call fcn.0048a330
add esp, 0xc
jmp 0x41bb56
movups xmm0, xmmword [ecx]
movups xmmword [ebp - 0x2c], xmm0
cmp byte [edi + 0x40], 0
je 0x41bb88
lea ecx, [ebp - 0x2c]
mov edx, 0x4d0d48
mov esi, 0xc
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41bb88
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41bb70
mov al, 1
jmp 0x41bdeb
push dword [ebx + 0x10]
lea ecx, [ebp - 0xa0]
mov dword [ebp - 0x9c], 0
push dword [ebx + 8]
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x98], 0x67452301
mov dword [ebp - 0x94], 0xefcdab89
mov dword [ebp - 0x90], 0x98badcfe
mov dword [ebp - 0x8c], 0x10325476
call fcn.004026f0
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0xa0]
call fcn.00402820
lea ecx, [ebp - 0x2c]
mov esi, 0xc
lea edx, [ebp - 0x44]
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41bc05
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41bbf0
xor eax, eax
jmp 0x41bc2a
cmp al, byte [edx]
jne 0x41bc25
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x41bc25
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x41bc25
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x41bc25
xor eax, eax
jmp 0x41bc2a
sbb eax, eax
or eax, 1
test eax, eax
sete cl
xor edx, edx
test cl, cl
jne 0x41bde9
nop dword [eax]
mov edi, dword [edi + 0x3c]
mov esi, dword [edi + 0x5c]
test esi, esi
je 0x41bde9
mov eax, edx
inc edx
mov dword [ebp - 0x30], edx
cmp eax, 3
jge 0x41bde9
mov ecx, dword [ebp - 0x18]
mov edx, dword [esi]
mov eax, dword [ecx + 4]
add eax, dword [ebp - 0x1c]
mov edi, dword [ecx + 0x3c]
push eax
push dword [ebx + 0x10]
mov eax, dword [edx + 0x18]
push dword [ecx + 0x18]
push dword [ebx + 0xc]
push dword [ecx + 0x24]
push dword [ecx + 0x20]
mov ecx, esi
push dword [ebx + 8]
push edi
call eax
mov byte [ebp - 0x11], al
test al, al
je 0x41bd4f
mov ecx, dword [ebp - 0x18]
lea edx, [ebp - 0x2c]
mov ecx, dword [ecx + 4]
add ecx, dword [ebp - 0x1c]
lea eax, [ecx + 0x10]
cmp edx, eax
jae 0x41bcbb
lea eax, [ebp - 0x1c]
cmp eax, ecx
jbe 0x41bcbb
push 0x10
push ecx
mov eax, edx
push eax
call fcn.0048a330
add esp, 0xc
jmp 0x41bcc2
movups xmm0, xmmword [ecx]
movups xmmword [ebp - 0x2c], xmm0
push dword [ebx + 0x10]
lea ecx, [ebp - 0xa0]
mov dword [ebp - 0x9c], 0
push dword [ebx + 8]
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x98], 0x67452301
mov dword [ebp - 0x94], 0xefcdab89
mov dword [ebp - 0x90], 0x98badcfe
mov dword [ebp - 0x8c], 0x10325476
call fcn.004026f0
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0xa0]
call fcn.00402820
lea edx, [ebp - 0x2c]
mov esi, 0xc
lea eax, [ebp - 0x44]
nop dword [eax]
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x41bd45
add edx, 4
add eax, 4
sub esi, 4
jae 0x41bd30
mov al, 1
jmp 0x41bd47
xor al, al
mov ecx, dword [ebx + 0x14]
mov byte [ebp - 0x11], al
mov byte [ecx], al
movzx eax, al
push eax
push dword [ebp - 0x30]
lea eax, [ebp - 0x4a0]
push dword [ebx + 0x10]
push dword [ebx + 0xc]
push str.System_Mopaq::MD5VerifyData::ValidateBlock
push str._s___ValidateBlock_fail__d__d__d__d
push eax
call fcn.0043a7b0
add esp, 0x1c
mov edx, 0x43b770
mov esi, eax
push 0x43b710
push ecx
mov ecx, 0x4e73dc
call fcn.00437550
test esi, esi
mov edx, 0x3ee
push 4
mov ecx, dword [eax + 8]
mov eax, 0x4c87fe
cmovne eax, esi
push eax
call fcn.0042da90
mov edi, eax
add esp, 0x10
test edi, edi
je 0x41bdd8
push 0x43b710
push ecx
mov edx, 0x43b770
mov ecx, 0x4e73dc
call fcn.00437550
mov esi, eax
add esp, 8
mov ecx, dword [esi + 8]
cmp ecx, edi
je 0x41bdd5
call fcn.0042ddf0
mov dword [esi + 8], edi
mov cl, byte [ebp - 0x11]
mov edi, dword [ebp - 0x18]
mov edx, dword [ebp - 0x30]
test cl, cl
je 0x41bc40
mov al, cl
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x10