Function at 0x41d0fe
Capabilities:
Encode data using xor
Hash data using sha1

Disassembly:
sub esp, 0x174
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x188]
xorps xmm0, xmm0
xor ebp, ebp
movlpd qword [esp + 0x34], xmm0
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], 0x67452301
cmp byte [edi], 0
mov dword [esp + 0x1c], 0xefcdab89
mov dword [esp + 0x20], 0x98badcfe
mov dword [esp + 0x24], 0x10325476
mov dword [esp + 0x28], 0xc3d2e1f0
je 0x41d166
mov esi, dword [esp + 0x34]
inc ebp
add esi, 8
adc eax, 0
cmp byte [edi + ebp], 0
jne 0x41d14f
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
jmp 0x41d172
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x10], eax
push 0x38
pop ecx
xor edx, edx
lea ebx, [ebp + 8]
mov eax, ebp
shr ebx, 6
div ecx
shl ebx, 3
lea eax, [ebp + 9]
sub ebx, edx
add ebx, 0x37
add eax, ebx
push eax
call fcn.0042551d
mov esi, eax
mov dword [esp + 0x44], esi
pop ecx
test esi, esi
je 0x41d3d8
push ebp
push edi
push esi
call fcn.004268d0
push ebx
lea eax, [esi + 1]
mov byte [esi + ebp], 0x80
add eax, ebp
push 0
push eax
call fcn.00426e50
mov edx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x28]
mov ecx, edx
shrd eax, ecx, 0x10
mov edi, edx
add esp, 0x18
or esi, eax
shr ecx, 0x10
and edi, 0xff0000
mov eax, edx
or edi, ecx
mov ecx, 0xff00
and eax, ecx
shrd esi, edi, 0x10
shr edi, 0x10
or edi, eax
movzx eax, dl
shrd esi, edi, 0x10
shr edi, 0x10
or edi, eax
mov eax, dword [esp + 0x10]
mov edx, eax
shld dword [esp + 0x14], eax, 0x10
and edx, ecx
xor ecx, ecx
or ecx, dword [esp + 0x14]
shl eax, 0x10
or edx, eax
mov eax, dword [esp + 0x10]
shld ecx, edx, 0x10
and eax, 0xff0000
shl edx, 0x10
or edx, eax
mov eax, dword [esp + 0x10]
shld ecx, edx, 0x10
and eax, 0xff000000
shl edx, 0x10
or edx, eax
shrd esi, edi, 8
shld ecx, edx, 8
shr edi, 8
or edi, ecx
shl edx, 8
mov ecx, dword [esp + 0x40]
or esi, edx
lea eax, [ecx + ebx]
mov dword [eax + ebp + 1], esi
mov dword [eax + ebp + 5], edi
lea eax, [ebp + 9]
add eax, ebx
shr eax, 6
mov dword [esp + 0x3c], eax
test eax, eax
je 0x41d3a8
mov esi, dword [esp + 0x34]
mov edx, ecx
xor ecx, ecx
mov eax, dword [edx]
add edx, 4
bswap eax
mov dword [esp + ecx*4 + 0x44], eax
inc ecx
cmp ecx, 0x10
jb 0x41d277
push 0x100
lea eax, [esp + 0x88]
mov dword [esp + 0x38], edx
push 0
push eax
call fcn.00426e50
add esp, 0xc
lea ecx, [esp + 0x4c]
push 0x40
pop edx
mov eax, dword [ecx + 0x2c]
xor eax, dword [ecx + 0x18]
xor eax, dword [ecx - 8]
xor eax, dword [ecx]
lea ecx, [ecx + 4]
rol eax, 1
mov dword [ecx + 0x34], eax
sub edx, 1
jne 0x41d2aa
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x44]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x28]
push 0xffffffffffffffd8
mov dword [esp + 0x34], ecx
pop ebp
mov dword [esp + 0x2c], eax
push 0x13
lea eax, [ebp + 0x28]
pop ecx
cmp eax, ecx
ja 0x41d306
mov esi, edi
mov eax, edx
not esi
and eax, edi
and esi, ebx
or esi, eax
mov eax, 0x5a827999
jmp 0x41d33d
lea eax, [ebp + 0x14]
cmp eax, ecx
ja 0x41d314
mov eax, 0x6ed9eba1
jmp 0x41d337
cmp ebp, ecx
ja 0x41d32b
mov esi, edx
mov eax, edx
or esi, edi
and eax, edi
and esi, ebx
or esi, eax
mov eax, 0x8f1bbcdc
jmp 0x41d33d
lea eax, [ebp - 0x14]
cmp eax, ecx
ja 0x41d341
mov eax, 0xca62c1d6
mov esi, ebx
xor esi, edx
xor esi, edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
add dword [esp + 0x2c], 4
rol ecx, 5
add ecx, dword [eax]
add ecx, dword [esp + 0x10]
add ecx, esi
add ecx, dword [esp + 0x30]
mov dword [esp + 0x30], ebx
mov ebx, edx
mov edx, edi
mov edi, dword [esp + 0x14]
ror edx, 2
inc ebp
mov dword [esp + 0x14], ecx
lea eax, [ebp + 0x28]
cmp eax, 0x4f
jbe 0x41d2e9
add dword [esp + 0x20], edx
mov eax, dword [esp + 0x30]
add dword [esp + 0x18], ecx
add dword [esp + 0x1c], edi
add dword [esp + 0x24], ebx
add dword [esp + 0x28], eax
sub dword [esp + 0x3c], 1
mov edx, dword [esp + 0x34]
jne 0x41d275
mov ecx, dword [esp + 0x40]
push ecx
call fcn.00425585
mov eax, dword [esp + 0x190]
pop ecx
mov ecx, dword [esp + 0x18]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x28]
mov dword [eax + 0x10], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x174
ret