Function at 0x40b556
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
xor ecx, ecx
mov ch, byte [eax]
movzx edx, byte [eax + 2]
add eax, 4
push ebx
push esi
mov cl, byte [eax - 3]
push edi
push 4
lea edi, [ebp - 0x158]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax - 1]
shl ecx, 8
or ecx, edx
mov dword [ebp - 0x14], ecx
xor ecx, ecx
mov ch, byte [eax]
movzx edx, byte [eax + 2]
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + 3]
shl ecx, 8
or ecx, edx
mov dword [ebp - 0xc], ecx
xor ecx, ecx
pop edx
add eax, edx
mov ch, byte [eax]
movzx esi, byte [eax + 2]
push 0xf
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, esi
movzx esi, byte [eax + 3]
shl ecx, 8
or ecx, esi
mov dword [ebp - 0x18], ecx
xor ecx, ecx
add eax, edx
mov ch, byte [eax]
movzx esi, byte [eax + 2]
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, esi
movzx esi, byte [eax + 3]
shl ecx, 8
or ecx, esi
mov dword [ebp - 0x10], ecx
xor ecx, ecx
add eax, edx
mov ch, byte [eax]
movzx esi, byte [eax + 2]
mov cl, byte [eax + 1]
movzx eax, byte [eax + 3]
shl ecx, 8
or ecx, esi
shl ecx, 8
or ecx, eax
mov eax, dword [ebp + 8]
mov esi, ecx
mov dword [ebp - 0x15c], eax
pop ecx
xor eax, eax
rep stosd dword es:[edi], eax
push 0x40
mov dword [ebp - 0x1c], esi
lea eax, [ebp - 0x154]
pop ecx
mov edi, dword [eax + 0x2c]
xor edi, dword [eax + 0x18]
xor edi, dword [eax - 8]
xor edi, dword [eax]
mov dword [eax + 0x38], edi
add eax, edx
dec ecx
jne 0x40b61b
mov eax, dword [ebp - 0x14]
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x18]
and dword [ebp + 8], 0
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 8], edi
mov edx, dword [ebp - 4]
mov ebx, eax
not ebx
and ebx, edi
mov edi, ecx
and edi, eax
or ebx, edi
mov edi, dword [ebp + 8]
rol edx, 5
add edx, ebx
add edx, dword [ebp + edi*4 - 0x15c]
inc dword [ebp + 8]
ror eax, 2
cmp dword [ebp + 8], 0x14
mov edi, ecx
lea edx, [edx + esi + 0x5a827999]
mov esi, dword [ebp - 8]
mov ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 8], edi
mov dword [ebp - 4], edx
jl 0x40b644
mov dword [ebp + 8], 0x14
mov ebx, edi
xor ebx, ecx
xor ebx, eax
rol edx, 5
add edx, ebx
mov ebx, dword [ebp + 8]
add edx, dword [ebp + ebx*4 - 0x15c]
inc dword [ebp + 8]
lea edx, [edx + esi + 0x6ed9eba1]
ror eax, 2
cmp dword [ebp + 8], 0x28
mov esi, edi
mov edi, ecx
mov ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 4], edx
jl 0x40b68c
mov dword [ebp + 8], 0x28
mov ebx, ecx
or ebx, eax
and ebx, edi
mov edi, ecx
and edi, eax
or ebx, edi
mov edi, dword [ebp + 8]
add ebx, dword [ebp + edi*4 - 0x15c]
rol edx, 5
add edx, esi
inc dword [ebp + 8]
ror eax, 2
cmp dword [ebp + 8], 0x3c
mov edi, ecx
lea edx, [ebx + edx - 0x70e44324]
mov ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 4], edx
jl 0x40b6c7
push 0x3c
mov dword [ebp - 8], edi
pop ebx
xor edi, ecx
xor edi, eax
add edi, dword [ebp + ebx*4 - 0x15c]
rol edx, 5
add edx, esi
mov esi, dword [ebp - 8]
ror eax, 2
lea edx, [edi + edx - 0x359d3e2a]
mov edi, ecx
inc ebx
cmp ebx, 0x50
mov ecx, eax
mov eax, dword [ebp - 4]
mov dword [ebp - 8], edi
mov dword [ebp - 4], edx
jl 0x40b705
mov ebx, dword [ebp - 0x14]
add ebx, edx
mov edx, dword [ebp + 0xc]
mov dword [edx], ebx
mov ebx, dword [ebp - 0xc]
add eax, ebx
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x18]
add ecx, eax
mov eax, dword [ebp - 0x10]
add edi, eax
mov eax, dword [ebp - 0x1c]
add esi, eax
mov dword [edx + 0xc], edi
pop edi
mov dword [edx + 0x10], esi
pop esi
mov dword [edx + 8], ecx
xor eax, eax
pop ebx
leave
ret 8