Function at 0x4104e0
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 0x4104f1
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 0x4105a7
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 0x41064e
mov edi, esi
not edi
and edi, ebx
mov ebx, esi
and ebx, edx
or edi, ebx
mov ebx, dword [ebp - 8]
jmp 0x41066d
cmp edi, 0x28
jb 0x410667
cmp edi, 0x3c
jae 0x410667
mov edi, ebx
or edi, edx
and ebx, edx
and edi, esi
or edi, ebx
mov ebx, dword [ebp - 8]
jmp 0x41066d
mov edi, esi
xor edi, ebx
xor edi, edx
mov edx, dword [ebp - 0xc]
add edx, 0xfffffffe
cmp edx, 0x14
jae 0x410681
mov dword [ebp - 4], 0x5a827999
jmp 0x4106a3
cmp edx, 0x28
jae 0x41068f
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x4106a3
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 0x4106e5
mov edi, edx
not edi
and edi, ebx
mov ebx, edx
and ebx, esi
or edi, ebx
jmp 0x410701
cmp edi, 0x28
jb 0x4106fb
cmp edi, 0x3c
jae 0x4106fb
mov edi, ebx
or edi, esi
and edi, edx
and ebx, esi
or edi, ebx
jmp 0x410701
mov edi, edx
xor edi, ebx
xor edi, esi
mov ebx, dword [ebp - 0xc]
dec ebx
cmp ebx, 0x14
jae 0x410713
mov dword [ebp - 4], 0x5a827999
jmp 0x410735
cmp ebx, 0x28
jae 0x410721
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x410735
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 0x410782
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x4107a1
cmp esi, 0x28
jb 0x41079b
cmp esi, 0x3c
jae 0x41079b
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x4107a1
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
cmp ebx, 0x14
jae 0x4107b2
mov dword [ebp - 4], 0x5a827999
jmp 0x4107d4
cmp ebx, 0x28
jae 0x4107c0
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x4107d4
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 0x410821
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x410840
cmp esi, 0x28
jb 0x41083a
cmp esi, 0x3c
jae 0x41083a
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x410840
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
inc ebx
cmp ebx, 0x14
jae 0x410852
mov dword [ebp - 4], 0x5a827999
jmp 0x410874
cmp ebx, 0x28
jae 0x410860
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x410874
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 0x4108c3
mov esi, edx
not esi
and esi, edi
mov edi, edx
and edi, ebx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x4108e2
cmp esi, 0x28
jb 0x4108dc
cmp esi, 0x3c
jae 0x4108dc
mov esi, edi
or esi, ebx
and edi, ebx
and esi, edx
or esi, edi
mov edi, dword [ebp - 8]
jmp 0x4108e2
mov esi, edx
xor esi, edi
xor esi, ebx
mov ebx, dword [ebp - 0xc]
add ebx, 2
cmp ebx, 0x14
jae 0x4108f6
mov dword [ebp - 4], 0x5a827999
jmp 0x410918
cmp ebx, 0x28
jae 0x410904
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x410918
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 0x410630
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