Function at 0x40f470
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
lea ecx, [eax + 0x28]
mov esi, 4
mov edx, dword [ecx]
mov edi, edx
shl edi, 0x10
mov ebx, edx
and ebx, 0xff00
or edi, ebx
movzx ebx, byte [ecx + 3]
shl edi, 8
or edi, ebx
shr edx, 8
and edx, 0xff00
or edi, edx
mov dword [ecx], edi
mov edx, dword [ecx + 4]
mov edi, edx
shl edi, 0x10
mov ebx, edx
shr edx, 8
and edx, 0xff00
and ebx, 0xff00
or edi, ebx
shl edi, 8
or edi, edx
movzx edx, byte [ecx + 7]
or edi, edx
mov dword [ecx + 4], edi
mov edx, dword [ecx + 8]
mov edi, edx
shl edi, 0x10
mov ebx, edx
shr edx, 8
and ebx, 0xff00
or edi, ebx
shl edi, 8
and edx, 0xff00
or edi, edx
movzx edx, byte [ecx + 0xb]
or edi, edx
mov dword [ecx + 8], edi
mov edx, dword [ecx + 0xc]
mov edi, edx
mov ebx, edx
shl edi, 0x10
and ebx, 0xff00
or edi, ebx
shr edx, 8
shl edi, 8
and edx, 0xff00
or edi, edx
movzx edx, byte [ecx + 0xf]
or edi, edx
mov dword [ecx + 0xc], edi
add ecx, 0x10
dec esi
jne 0x40f481
lea ecx, [eax + 0x28]
mov dword [ebp - 0x18], 0x10
mov edx, dword [ecx + 0x34]
xor edx, dword [ecx + 0x20]
mov esi, dword [ecx + 8]
mov ebx, dword [ecx + 0x38]
xor ebx, dword [ecx + 0x24]
mov edi, dword [ecx + 0xc]
xor ebx, dword [ecx + 4]
xor edx, esi
xor edx, dword [ecx]
xor ebx, edi
rol edx, 1
rol ebx, 1
mov dword [ecx + 0x44], ebx
mov ebx, dword [ecx + 0x3c]
xor ebx, dword [ecx + 0x28]
mov dword [ecx + 0x40], edx
xor ebx, esi
mov esi, dword [ecx + 0x2c]
xor esi, dword [ecx + 0x14]
xor ebx, dword [ecx + 0x10]
xor esi, edx
rol ebx, 1
xor esi, edi
rol esi, 1
mov dword [ecx + 0x48], ebx
mov dword [ecx + 0x4c], esi
add ecx, 0x10
dec dword [ebp - 0x18]
jne 0x40f537
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x18]
mov dword [eax], ecx
mov ecx, dword [eax + 0x1c]
mov dword [eax + 4], edx
mov edx, dword [eax + 0x20]
mov dword [eax + 8], ecx
mov ecx, dword [eax + 0x24]
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ecx
mov esi, dword [eax + 4]
mov ebx, edx
mov dword [ebp - 8], edx
mov edx, dword [eax + 8]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], 2
mov dword [ebp - 0x18], 0x2c
nop
mov edi, dword [ebp - 0xc]
mov ecx, dword [eax]
add edi, 0xfffffffe
cmp edi, 0x14
jae 0x40f5de
mov edi, esi
not edi
and edi, ebx
mov ebx, esi
and ebx, edx
or edi, ebx
mov ebx, dword [ebp - 8]
jmp 0x40f5fd
cmp edi, 0x28
jb 0x40f5f7
cmp edi, 0x3c
jae 0x40f5f7
mov edi, ebx
or edi, edx
and ebx, edx
and edi, esi
or edi, ebx
mov ebx, dword [ebp - 8]
jmp 0x40f5fd
mov edi, esi
xor edi, ebx
xor edi, edx
mov edx, dword [ebp - 0xc]
add edx, 0xfffffffe
cmp edx, 0x14
jae 0x40f611
mov dword [ebp - 4], 0x5a827999
jmp 0x40f633
cmp edx, 0x28
jae 0x40f61f
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x40f633
cmp edx, 0x3c
sbb edx, edx
and edx, 0xc4b8fb06
add edx, 0xca62c1d6
mov dword [ebp - 4], edx
mov edx, dword [ebp - 0x18]
rol ecx, 5
add ecx, dword [edx + eax - 4]
mov edx, dword [eax]
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], ebx
add ecx, dword [ebp - 4]
mov dword [eax + 0x10], ebx
mov ebx, dword [ebp - 0x14]
add ecx, edi
mov edi, dword [ebp - 0xc]
ror esi, 2
dec edi
mov dword [eax + 0xc], ebx
mov dword [eax + 8], esi
mov dword [eax + 4], edx
mov dword [eax], ecx
cmp edi, 0x14
jae 0x40f675
mov edi, edx
not edi
and edi, ebx
mov ebx, edx
and ebx, esi
or edi, ebx
jmp 0x40f691
cmp edi, 0x28
jb 0x40f68b
cmp edi, 0x3c
jae 0x40f68b
mov edi, ebx
or edi, esi
and edi, edx
and ebx, esi
or edi, ebx
jmp 0x40f691
mov edi, edx
xor edi, ebx
xor edi, esi
mov ebx, dword [ebp - 0xc]
dec ebx
cmp ebx, 0x14
jae 0x40f6a3
mov dword [ebp - 4], 0x5a827999
jmp 0x40f6c5
cmp ebx, 0x28
jae 0x40f6b1
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x40f6c5
cmp ebx, 0x3c
sbb ebx, ebx
and ebx, 0xc4b8fb06
add ebx, 0xca62c1d6
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0x18]
rol ecx, 5
add ecx, dword [ebx + eax]
mov dword [eax + 0xc], esi
add ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 4]
add ecx, edi
mov edi, dword [ebp - 0x14]
ror edx, 2
mov dword [ebp - 0x10], edi
mov dword [eax + 0x10], edi
mov edi, esi
mov esi, dword [ebp - 0xc]
mov ebx, edx
mov edx, dword [eax]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], ebx
mov dword [eax + 8], ebx
mov dword [eax + 4], edx
mov dword [eax], ecx
cmp esi, 0x14
jae 0x40f712
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f731
cmp esi, 0x28
jb 0x40f72b
cmp esi, 0x3c
jae 0x40f72b
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f731
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
cmp ebx, 0x14
jae 0x40f742
mov dword [ebp - 4], 0x5a827999
jmp 0x40f764
cmp ebx, 0x28
jae 0x40f750
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x40f764
cmp ebx, 0x3c
sbb ebx, ebx
and ebx, 0xc4b8fb06
add ebx, 0xca62c1d6
mov dword [ebp - 4], ebx
rol ecx, 5
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], edi
add ecx, dword [ebp - 4]
add ecx, esi
mov esi, dword [ebp - 0x18]
add ecx, dword [esi + eax + 4]
mov esi, dword [ebp - 0xc]
ror edx, 2
mov ebx, edx
mov edx, dword [eax]
mov dword [eax + 0x10], edi
mov edi, dword [ebp - 0x14]
inc esi
mov dword [ebp - 8], edi
mov dword [eax + 0xc], edi
mov dword [ebp - 0x14], ebx
mov dword [eax + 8], ebx
mov dword [eax + 4], edx
mov dword [eax], ecx
cmp esi, 0x14
jae 0x40f7b1
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f7d0
cmp esi, 0x28
jb 0x40f7ca
cmp esi, 0x3c
jae 0x40f7ca
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f7d0
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
inc ebx
cmp ebx, 0x14
jae 0x40f7e2
mov dword [ebp - 4], 0x5a827999
jmp 0x40f804
cmp ebx, 0x28
jae 0x40f7f0
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x40f804
cmp ebx, 0x3c
sbb ebx, ebx
and ebx, 0xc4b8fb06
add ebx, 0xca62c1d6
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0x18]
rol ecx, 5
add ecx, dword [ebx + eax + 8]
mov dword [eax + 0x10], edi
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], edi
add ecx, dword [ebp - 4]
mov edi, dword [ebp - 0x14]
add ecx, esi
mov esi, dword [ebp - 0xc]
ror edx, 2
mov ebx, edx
mov edx, dword [eax]
add esi, 2
mov dword [ebp - 8], edi
mov dword [eax + 0xc], edi
mov dword [ebp - 0x14], ebx
mov dword [eax + 8], ebx
mov dword [eax + 4], edx
mov dword [eax], ecx
cmp esi, 0x14
jae 0x40f853
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f872
cmp esi, 0x28
jb 0x40f86c
cmp esi, 0x3c
jae 0x40f86c
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x40f872
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
add ebx, 2
cmp ebx, 0x14
jae 0x40f886
mov dword [ebp - 4], 0x5a827999
jmp 0x40f8a8
cmp ebx, 0x28
jae 0x40f894
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x40f8a8
cmp ebx, 0x3c
sbb ebx, ebx
and ebx, 0xc4b8fb06
add ebx, 0xca62c1d6
mov dword [ebp - 4], ebx
mov ebx, dword [ebp - 0x18]
add dword [ebp - 0x18], 0x14
rol ecx, 5
add ecx, dword [ebx + eax + 0xc]
mov ebx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x10], edi
add ecx, dword [ebp - 4]
mov dword [eax + 0x10], edi
add ecx, esi
mov esi, dword [eax]
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
add ecx, 5
ror edx, 2
mov dword [ebp - 0xc], ecx
add ecx, 0xfffffffe
mov dword [ebp - 8], ebx
mov dword [eax + 0xc], ebx
mov dword [ebp - 0x14], edx
mov dword [eax + 8], edx
mov dword [eax + 4], esi
cmp ecx, 0x50
jb 0x40f5c0
mov ecx, dword [eax]
add dword [eax + 0x14], ecx
mov edx, dword [eax + 4]
mov ecx, dword [eax + 8]
add dword [eax + 0x18], edx
add dword [eax + 0x1c], ecx
mov edx, dword [eax + 0xc]
mov ecx, dword [eax + 0x10]
add dword [eax + 0x20], edx
add dword [eax + 0x24], ecx
pop edi
pop esi
mov dword [eax + 0x168], 0
pop ebx
mov esp, ebp
pop ebp
ret