Function at 0x40dec0
Capabilities:
Encode data using xor
Hash data using sha256

Disassembly:
sub esp, 0x24
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x38]
mov ebp, 0x41a68c
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], 0x10
mov ebx, dword [edi + 0x14]
mov eax, dword [edi + 8]
mov ecx, dword [edi]
mov esi, dword [edi + 4]
mov dword [esp + 0x14], ebx
mov ebx, dword [edi + 0x18]
lea edx, [edi + 0x28]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x18], ebx
mov ebx, dword [edi + 0x1c]
sub edx, ebp
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x3c]
mov ebx, dword [edx]
add edx, 4
mov dword [esp + 0x3c], edx
mov edx, ebx
shl ebx, 0x10
shr edx, 0x10
or edx, ebx
mov ebx, edx
and dh, 0
shr ebx, 8
and ebx, 0xff00ff
shl edx, 8
or ebx, edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x30], ebx
mov dword [edx + ebp], ebx
mov edx, eax
mov ebx, eax
mov ebp, eax
shl edx, 0x15
shr ebx, 0xb
or edx, ebx
mov ebx, eax
shl ebx, 0x1a
shr ebp, 6
or ebx, ebp
mov ebp, eax
xor edx, ebx
mov ebx, eax
shr ebx, 0x19
shl ebp, 7
or ebx, ebp
mov ebp, dword [esp + 0x18]
xor edx, ebx
mov ebx, eax
not ebx
and ebx, ebp
mov ebp, dword [esp + 0x14]
and ebp, eax
xor ebx, ebp
add edx, ebx
mov ebx, dword [esp + 0x24]
mov ebp, dword [ebx]
mov ebx, dword [esp + 0x1c]
add edx, ebp
mov ebp, dword [esp + 0x30]
add edx, ebp
mov ebp, ecx
add edx, ebx
mov ebx, ecx
shl ebx, 0x13
shr ebp, 0xd
or ebx, ebp
mov ebp, ecx
mov dword [esp + 0x1c], ebx
mov ebx, ecx
shr ebx, 0x16
shl ebp, 0xa
or ebx, ebp
mov ebp, dword [esp + 0x1c]
xor ebp, ebx
mov ebx, ecx
mov dword [esp + 0x1c], ebp
mov ebp, ecx
shl ebx, 0x1e
shr ebp, 2
or ebx, ebp
mov ebp, dword [esp + 0x1c]
xor ebp, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x1c], ebp
mov ebp, esi
xor ebp, ecx
and ebp, ebx
mov ebx, esi
and ebx, ecx
xor ebp, ebx
mov ebx, dword [esp + 0x1c]
add ebx, ebp
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x24]
add ebp, 4
add eax, edx
mov dword [esp + 0x10], esi
mov esi, ecx
cmp ebp, 0x41a6cc
lea ecx, [ebx + edx]
mov dword [esp + 0x24], ebp
jl 0x40df10
mov edx, 0xe
mov dword [esp + 0x2c], 0x41a6cc
mov dword [esp + 0x24], edx
lea ebx, [edx + 3]
add edi, 0x28
and ebx, 0xf
and edx, 0xf
mov ebx, dword [edi + ebx*4]
mov edx, dword [edi + edx*4]
mov dword [esp + 0x3c], ebx
mov ebx, dword [esp + 0x28]
and ebx, 0xf
mov ebp, edx
shl ebp, 0xd
lea edi, [edi + ebx*4]
mov ebx, edx
mov dword [esp + 0x30], edi
mov edi, edx
shr ebx, 0x11
shl edi, 0xf
or ebx, edi
mov edi, edx
shr edi, 0x13
or edi, ebp
xor ebx, edi
shr edx, 0xa
xor ebx, edx
mov edx, dword [esp + 0x3c]
mov edi, edx
mov ebp, edx
shr edi, 0x12
shl ebp, 0xe
or edi, ebp
mov ebp, edx
shl ebp, 0x19
shr edx, 7
or ebp, edx
mov edx, dword [esp + 0x3c]
xor edi, ebp
shr edx, 3
xor edi, edx
mov edx, dword [esp + 0x24]
add ebx, edi
mov edi, dword [esp + 0x38]
lea ebp, [edx - 5]
and ebp, 0xf
lea edx, [edi + 0x28]
add ebx, dword [edx + ebp*4]
mov edx, dword [esp + 0x30]
mov ebp, dword [edx]
add ebp, ebx
mov ebx, eax
mov dword [edx], ebp
mov edx, ebp
mov dword [esp + 0x3c], edx
mov edx, eax
shl edx, 0x15
shr ebx, 0xb
or edx, ebx
mov ebx, eax
mov ebp, eax
shl ebx, 0x1a
shr ebp, 6
or ebx, ebp
mov ebp, eax
xor edx, ebx
mov ebx, eax
shr ebx, 0x19
shl ebp, 7
or ebx, ebp
mov ebp, dword [esp + 0x18]
xor edx, ebx
mov ebx, eax
not ebx
and ebx, ebp
mov ebp, dword [esp + 0x14]
and ebp, eax
xor ebx, ebp
add edx, ebx
mov ebx, dword [esp + 0x2c]
mov ebp, dword [ebx]
add edx, ebp
mov ebp, dword [esp + 0x3c]
add edx, ebp
mov ebx, dword [esp + 0x1c]
mov ebp, ecx
add edx, ebx
mov ebx, ecx
shl ebx, 0x13
shr ebp, 0xd
or ebx, ebp
mov ebp, ecx
mov dword [esp + 0x3c], ebx
mov ebx, ecx
shr ebx, 0x16
shl ebp, 0xa
or ebx, ebp
mov ebp, dword [esp + 0x3c]
xor ebp, ebx
mov ebx, ecx
mov dword [esp + 0x3c], ebp
mov ebp, ecx
shl ebx, 0x1e
shr ebp, 2
or ebx, ebp
mov ebp, dword [esp + 0x3c]
xor ebp, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x3c], ebp
mov ebp, esi
xor ebp, ecx
and ebp, ebx
mov ebx, esi
and ebx, ecx
xor ebp, ebx
mov ebx, dword [esp + 0x3c]
add ebx, ebp
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], esi
mov esi, ecx
add eax, edx
lea ecx, [ebx + edx]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
inc edx
add ebx, 4
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x24]
inc edx
cmp ebx, 0x41a78c
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], ebx
jl 0x40e03a
mov edx, dword [edi]
mov ebx, dword [edi + 4]
add edx, ecx
mov ecx, dword [esp + 0x10]
mov dword [edi], edx
mov edx, dword [edi + 8]
add ebx, esi
add edx, ecx
mov ecx, dword [edi + 0xc]
mov dword [edi + 4], ebx
mov ebx, dword [edi + 0x10]
mov esi, dword [edi + 0x14]
add ecx, ebp
add ebx, eax
mov eax, dword [esp + 0x18]
mov dword [edi + 0xc], ecx
mov ecx, dword [edi + 0x18]
mov dword [edi + 8], edx
mov edx, dword [esp + 0x14]
add ecx, eax
mov eax, dword [edi + 0x1c]
mov dword [edi + 0x18], ecx
mov ecx, dword [esp + 0x1c]
add esi, edx
add eax, ecx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x14], esi
mov dword [edi + 0x1c], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret