Function at 0x478fa0
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b2c81
mov eax, dword fs:[0]
push eax
sub esp, 0xfc
mov eax, dword [0x4e51f0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov edi, ecx
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc8], eax
push 0x44
mov eax, dword [ecx]
mov dword [ecx + 4], eax
lea eax, [ebp - 0xbc]
push 0
push eax
mov dword [ebp - 0xfc], ecx
call fcn.00495750
add esp, 0xc
mov dword [ebp - 0xc0], 1
mov dword [ebp - 0xec], 0
mov dword [ebp - 0xe8], 0
mov dword [ebp - 0xe4], 0
lea eax, [ebp - 0xec]
mov dword [ebp - 4], 0
push eax
mov edx, esi
mov ecx, edi
call fcn.0048c5f0
mov esi, dword [ebp - 0xe8]
xor eax, eax
mov ebx, dword [ebp - 0xec]
mov edi, esi
sub edi, ebx
add esp, 4
cmp ebx, esi
mov dword [ebp - 0x7c], edi
mov edx, ebx
cmove edx, eax
mov eax, 0xad
test edi, edi
jle 0x479094
mov esi, edi
jmp 0x479070
mov cl, byte [eax + 0x4cc150]
lea edx, [edx + 1]
xor byte [edx - 1], cl
inc eax
and eax, 0x800000ff
jns 0x47908b
dec eax
or eax, 0xffffff00
inc eax
dec esi
jne 0x479070
mov esi, dword [ebp - 0xe8]
push 0x49
lea eax, [ebp - 0x78]
push 0
push eax
call fcn.00495750
lea eax, [edi + 1]
mov byte [ebp - 0x78], 0x80
and eax, 0x3f
add esp, 0xc
mov ecx, 0x41
cmp eax, 0x38
jle 0x4790bd
mov ecx, 0x81
sub ecx, eax
lea eax, [edi*8]
mov dword [ebp - 0xc4], eax
push edi
mov byte [ebp + ecx - 0x80], al
mov byte [ebp + ecx - 0x7f], ah
movzx eax, byte [ebp - 0xc2]
mov byte [ebp + ecx - 0x7e], al
movzx eax, byte [ebp - 0xc1]
mov byte [ebp + ecx - 0x7d], al
lea eax, [ecx + edi]
shr eax, 6
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x1c], eax
xor eax, eax
cmp ebx, esi
mov dword [ebp - 0x2c], 0x67452301
mov dword [ebp - 0x28], 0xefcdab89
cmove ebx, eax
mov dword [ebp - 0x24], 0x98badcfe
mov edx, ebx
mov dword [ebp - 0x20], 0x10325476
mov dword [ebp - 0x18], edi
call fcn.00484120
movdqu xmm0, xmmword [ebp - 0x2c]
add esp, 4
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0xf4], 0
movdqu xmmword [ebp - 0xbc], xmm0
mov dword [ebp - 0xf0], 0
mov esi, dword [ebp - 0xc8]
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 1
mov eax, dword [esi + 0x10]
add eax, eax
push eax
call fcn.00432950
cmp dword [esi + 0x14], 8
jb 0x479175
mov esi, dword [esi]
mov ebx, dword [ebp - 0xf8]
xor edx, edx
mov ecx, dword [ebp - 0xf4]
mov eax, ebx
cmp ebx, ecx
cmove eax, edx
sub ecx, ebx
push ecx
push esi
push eax
mov dword [ebp - 0xc8], ecx
call fcn.0048ea20
xor eax, eax
add esp, 0xc
cmp ebx, dword [ebp - 0xf4]
mov edx, ebx
cmove edx, eax
lea ecx, [eax + 0x3b]
mov eax, dword [ebp - 0xc8]
test eax, eax
jle 0x4791e0
mov esi, eax
lea esp, [esp]
mov al, byte [ecx + 0x4cbd50]
lea edx, [edx + 1]
xor byte [edx - 1], al
inc ecx
and ecx, 0x800000ff
jns 0x4791dd
dec ecx
or ecx, 0xffffff00
inc ecx
dec esi
jne 0x4791c0
mov ecx, dword [ebp - 0xa8]
and ecx, 0x8000000f
jns 0x4791f3
dec ecx
or ecx, 0xfffffff0
inc ecx
mov eax, dword [ebp - 0x9c]
add ecx, 0x10
mov dword [ebp - 0xdc], ecx
and eax, 0x8000000f
jns 0x47920e
dec eax
or eax, 0xfffffff0
inc eax
add eax, 0x10
mov dword [ebp - 0xd8], 0
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 0
imul eax, ecx
lea ecx, [ebp - 0xd8]
mov byte [ebp - 4], 2
push eax
call fcn.00432950
mov eax, dword [ebp - 0xd8]
xor ecx, ecx
mov ebx, dword [ebp - 0xd4]
mov esi, eax
cmp eax, ebx
cmove esi, ecx
mov ecx, 0x60
sub ebx, eax
lea edx, [ecx - 0x55]
test ebx, ebx
jle 0x4792a5
jmp 0x479270
mov al, byte [ebp + edx*4 - 0xbc]
lea esi, [esi + 1]
xor al, byte [ecx + 0x4cc050]
inc ecx
mov byte [esi - 1], al
and ecx, 0x800000ff
jns 0x479294
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
and edx, 0x8000000f
jns 0x4792a2
dec edx
or edx, 0xfffffff0
inc edx
dec ebx
jne 0x479270
mov ecx, dword [ebp - 0x98]
and ecx, 0x8000001f
jns 0x4792b8
dec ecx
or ecx, 0xffffffe0
inc ecx
lea eax, [edi + 1]
add ecx, 0x20
cdq
sub eax, edx
mov dword [ebp - 0xc4], ecx
sar eax, 1
mov dword [ebp - 0x108], eax
add eax, 3
cdq
and edx, 3
add eax, edx
sar eax, 2
dec eax
add eax, ecx
cdq
idiv ecx
mov ebx, eax
mov dword [ebp - 0xe0], eax
imul ebx, ecx
shl ebx, 2
mov dword [ebp - 0x104], ebx
lea ecx, [ebx + ebx]
push ecx
lea ecx, [ebp - 0xec]
call fcn.00432950
mov edx, dword [ebp - 0xe8]
mov esi, edx
mov ecx, dword [ebp - 0xec]
sub esi, ecx
sub esi, edi
test esi, esi
jle 0x479375
cmp ecx, edx
mov dword [ebp - 0x100], 0
mov eax, ecx
mov edx, 7
cmove eax, dword [ebp - 0x100]
mov ecx, 0xdd
add edi, eax
test esi, esi
jle 0x479375
nop
mov al, byte [ebp + edx*4 - 0xbc]
lea edi, [edi + 1]
xor al, byte [ecx + 0x4cbf50]
inc ecx
mov byte [edi - 1], al
and ecx, 0x800000ff
jns 0x479364
dec ecx
or ecx, 0xffffff00
inc ecx
inc edx
and edx, 0x8000000f
jns 0x479372
dec edx
or edx, 0xfffffff0
inc edx
dec esi
jne 0x479340
mov esi, dword [ebp - 0xfc]
lea eax, [ebx*2 + 0x4c]
mov ebx, dword [ebp - 0xf8]
mov ecx, esi
sub eax, ebx
add eax, dword [ebp - 0xf4]
push eax
call fcn.00432950
mov edi, dword [esi]
xor eax, eax
cmp edi, dword [esi + 4]
movdqu xmm0, xmmword [ebp - 0xc0]
mov ecx, dword [ebp - 0xc8]
cmove edi, eax
xor edx, edx
mov eax, ebx
cmp ebx, dword [ebp - 0xf4]
push ecx
movdqu xmmword [edi], xmm0
cmove eax, edx
lea esi, [edi + 0x4c]
movdqu xmm0, xmmword [ebp - 0xb0]
push eax
push esi
movdqu xmmword [edi + 0x10], xmm0
movdqu xmm0, xmmword [ebp - 0xa0]
movdqu xmmword [edi + 0x20], xmm0
movdqu xmm0, xmmword [ebp - 0x90]
movdqu xmmword [edi + 0x30], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [edi + 0x40], xmm0
mov dword [edi + 0x48], ecx
call fcn.0048ea20
mov edi, dword [edi + 0x48]
xor ecx, ecx
mov eax, dword [ebp - 0xec]
add edi, esi
cmp eax, dword [ebp - 0xe8]
mov esi, eax
mov ebx, dword [ebp - 0x108]
cmove esi, ecx
mov ecx, dword [ebp - 0xd8]
xor edx, edx
add ebx, esi
cmp ecx, dword [ebp - 0xd4]
mov eax, ecx
mov ecx, edi
cmove eax, edx
add esp, 8
push edx
sub esp, 8
mov edx, esi
push dword [ebp - 0xcc]
push dword [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
push dword [ebp - 0xc4]
call fcn.00484cd0
mov ecx, dword [ebp - 0xd8]
xor edx, edx
cmp ecx, dword [ebp - 0xd4]
mov eax, ecx
mov ecx, edi
cmove eax, edx
add esp, 0x20
mov edx, ebx
push 1
sub esp, 8
push dword [ebp - 0xcc]
push dword [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
push dword [ebp - 0xc4]
call fcn.00484cd0
mov ecx, dword [ebp - 0xd8]
xor edx, edx
cmp ecx, dword [ebp - 0xd4]
mov eax, ecx
cmove eax, edx
add esp, 0x20
push 1
sub esp, 8
mov edx, esi
mov esi, dword [ebp - 0x104]
add esi, edi
mov ecx, esi
push dword [ebp - 0xcc]
push dword [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
push dword [ebp - 0xc4]
call fcn.00484cd0
mov ecx, dword [ebp - 0xd8]
xor edx, edx
cmp ecx, dword [ebp - 0xd4]
mov eax, ecx
mov ecx, esi
cmove eax, edx
add esp, 0x20
push edx
sub esp, 8
mov edx, ebx
push dword [ebp - 0xcc]
push dword [ebp - 0xdc]
push eax
push dword [ebp - 0xe0]
push dword [ebp - 0xc4]
call fcn.00484cd0
mov ebx, dword [ebp - 0xfc]
xor edx, edx
add esp, 0x24
mov eax, dword [ebx]
mov esi, eax
mov ecx, dword [ebx + 4]
cmp eax, ecx
cmove esi, edx
sub ecx, eax
xor edi, edi
mov edx, 0xd
test ecx, ecx
jle 0x479567
mov edi, edi
mov al, byte [edx + 0x4cbe50]
lea esi, [esi + 1]
xor byte [esi - 1], al
inc edx
and edx, 0x800000ff
jns 0x47955d
dec edx
or edx, 0xffffff00
inc edx
mov eax, dword [ebx + 4]
inc edi
sub eax, dword [ebx]
cmp edi, eax
jl 0x479540
mov eax, dword [ebp - 0xd8]
test eax, eax
je 0x47957a
push eax
call fcn.0048ccb8
add esp, 4
mov eax, dword [ebp - 0xf8]
test eax, eax
je 0x47958d
push eax
call fcn.0048ccb8
add esp, 4
mov eax, dword [ebp - 0xec]
test eax, eax
je 0x4795a0
push eax
call fcn.0048ccb8
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0048cca9
mov esp, ebp
pop ebp
ret