Function at 0x10176e49
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push ebx
mov eax, ecx
shr eax, 2
push esi
lea esi, [edx + eax*4]
mov eax, dword [ebp + 0x10]
add dword [eax + 0x10], ecx
cmp dword [eax + 0x10], ecx
mov ebx, dword [eax + 4]
mov dword [ebp - 0xc], esi
jae 0x10176e73
inc dword [eax + 0x14]
cmp edx, esi
jae 0x1017741f
push edi
mov esi, edx
add edx, 0x40
mov dword [ebp - 8], edx
mov edx, dword [eax + 8]
push 0x10
pop ecx
lea edi, [ebp - 0x4c]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [eax + 0xc]
mov edi, dword [eax + 8]
mov ecx, esi
xor ecx, edx
and ecx, ebx
xor ecx, esi
add ecx, dword [ebp - 0x4c]
xor edx, ebx
add ecx, dword [eax]
rol ecx, 3
and edx, ecx
xor edx, edi
add edx, dword [ebp - 0x48]
add edx, esi
rol edx, 7
mov esi, ebx
xor esi, ecx
and esi, edx
xor esi, ebx
add esi, dword [ebp - 0x44]
add esi, edi
rol esi, 0xb
mov edi, edx
xor edi, ecx
and edi, esi
xor edi, ecx
add edi, dword [ebp - 0x40]
add edi, ebx
ror edi, 0xd
mov ebx, edx
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, dword [ebp - 0x3c]
add ebx, ecx
rol ebx, 3
mov ecx, esi
xor ecx, edi
and ecx, ebx
xor ecx, esi
add ecx, dword [ebp - 0x38]
add ecx, edx
rol ecx, 7
mov edx, edi
xor edx, ebx
and edx, ecx
xor edx, edi
add edx, dword [ebp - 0x34]
add edx, esi
rol edx, 0xb
mov esi, ecx
xor esi, ebx
and esi, edx
xor esi, ebx
add esi, dword [ebp - 0x30]
add esi, edi
ror esi, 0xd
mov edi, ecx
xor edi, edx
and edi, esi
xor edi, ecx
add edi, dword [ebp - 0x2c]
add edi, ebx
rol edi, 3
mov ebx, edx
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, dword [ebp - 0x28]
add ebx, ecx
mov ecx, esi
rol ebx, 7
xor ecx, edi
and ecx, ebx
xor ecx, esi
add ecx, dword [ebp - 0x24]
add ecx, edx
rol ecx, 0xb
mov edx, ebx
xor edx, edi
and edx, ecx
xor edx, edi
add edx, dword [ebp - 0x20]
mov dword [ebp + 8], ecx
add edx, esi
mov esi, dword [ebp + 8]
ror edx, 0xd
mov ecx, ebx
xor ecx, esi
and ecx, edx
xor ecx, ebx
add ecx, dword [ebp - 0x1c]
xor esi, edx
add ecx, edi
rol ecx, 3
and esi, ecx
xor esi, dword [ebp + 8]
mov dword [ebp + 0xc], edx
add esi, dword [ebp - 0x18]
xor edx, ecx
add esi, ebx
rol esi, 7
and edx, esi
xor edx, dword [ebp + 0xc]
mov edi, esi
add edx, dword [ebp - 0x14]
xor edi, ecx
add edx, dword [ebp + 8]
rol edx, 0xb
and edi, edx
xor edi, ecx
add edi, dword [ebp - 0x10]
mov ebx, edx
add edi, dword [ebp + 0xc]
ror edi, 0xd
or ebx, edi
and ebx, esi
mov dword [ebp + 0xc], edi
mov edi, edx
and edi, dword [ebp + 0xc]
or ebx, edi
add ebx, dword [ebp - 0x4c]
add ecx, ebx
lea edi, [ecx + 0x5a827999]
lea ecx, [ecx*8 - 0x2bec3338]
shr edi, 0x1d
or edi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp + 8], ecx
or dword [ebp + 8], edi
mov ebx, dword [ebp + 8]
and ebx, edx
and ecx, edi
or ebx, ecx
add ebx, dword [ebp - 0x3c]
add esi, ebx
lea ebx, [esi + 0x5a827999]
add esi, 0x2827999
shl esi, 5
shr ebx, 0x1b
or ebx, esi
mov esi, dword [ebp + 8]
and esi, ebx
or esi, ecx
add esi, dword [ebp - 0x2c]
mov dword [ebp - 4], ebx
add edx, esi
lea ecx, [edx + 0x5a827999]
add edx, 0x27999
shl edx, 9
shr ecx, 0x17
or ecx, edx
mov edx, ecx
or edx, edi
and edx, ebx
mov esi, ecx
and esi, edi
or edx, esi
add edx, dword [ebp - 0x1c]
mov esi, dword [ebp + 0xc]
add esi, edx
lea edx, [esi + 0x5a827999]
add esi, 0x27999
shl esi, 0xd
shr edx, 0x13
or edx, esi
mov esi, ecx
or esi, edx
and esi, ebx
mov ebx, ecx
and ebx, edx
or esi, ebx
add esi, dword [ebp - 0x48]
mov dword [ebp + 0xc], edx
add edi, esi
lea ebx, [edi + 0x5a827999]
shr ebx, 0x1d
lea esi, [edi*8 - 0x2bec3338]
or ebx, esi
and dword [ebp + 0xc], ebx
mov esi, edx
or esi, ebx
mov edi, esi
mov dword [ebp + 0x10], ebx
mov ebx, dword [ebp - 4]
and edi, ecx
or edi, dword [ebp + 0xc]
add edi, dword [ebp - 0x38]
add ebx, edi
lea edi, [ebx + 0x5a827999]
add ebx, 0x2827999
shl ebx, 5
shr edi, 0x1b
or edi, ebx
and esi, edi
or esi, dword [ebp + 0xc]
add esi, dword [ebp - 0x28]
add esi, ecx
lea ecx, [esi + 0x5a827999]
add esi, 0x27999
shl esi, 9
shr ecx, 0x17
or ecx, esi
mov esi, ecx
or esi, dword [ebp + 0x10]
mov ebx, ecx
and ebx, dword [ebp + 0x10]
and esi, edi
or esi, ebx
add esi, dword [ebp - 0x18]
mov ebx, ecx
add edx, esi
lea esi, [edx + 0x5a827999]
add edx, 0x27999
shl edx, 0xd
shr esi, 0x13
or esi, edx
and ebx, esi
mov edx, ecx
or edx, esi
and edx, edi
or edx, ebx
add edx, dword [ebp - 0x44]
mov ebx, dword [ebp + 0x10]
add ebx, edx
lea edx, [ebx + 0x5a827999]
shr edx, 0x1d
lea ebx, [ebx*8 - 0x2bec3338]
or edx, ebx
mov dword [ebp + 8], esi
or dword [ebp + 8], edx
mov ebx, esi
mov dword [ebp + 0x10], edx
and ebx, edx
mov edx, dword [ebp + 8]
and edx, ecx
or edx, ebx
add edx, dword [ebp - 0x34]
add edx, edi
lea edi, [edx + 0x5a827999]
shr edi, 0x1b
add edx, 0x2827999
shl edx, 5
or edi, edx
mov edx, dword [ebp + 8]
and edx, edi
or edx, ebx
add edx, dword [ebp - 0x24]
mov dword [ebp - 4], edi
add edx, ecx
lea ecx, [edx + 0x5a827999]
add edx, 0x27999
shr ecx, 0x17
shl edx, 9
or ecx, edx
mov edx, ecx
or edx, dword [ebp + 0x10]
mov ebx, ecx
and ebx, dword [ebp + 0x10]
and edx, edi
or edx, ebx
add edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
add esi, edx
lea edx, [esi + 0x5a827999]
add esi, 0x27999
shl esi, 0xd
shr edx, 0x13
or edx, esi
mov esi, ecx
or esi, edx
and esi, edi
mov edi, ecx
and edi, edx
or esi, edi
add esi, dword [ebp - 0x40]
mov edi, dword [ebp + 0x10]
add edi, esi
lea esi, [edi + 0x5a827999]
lea edi, [edi*8 - 0x2bec3338]
shr esi, 0x1d
or esi, edi
mov dword [ebp + 8], edx
or dword [ebp + 8], esi
mov edi, dword [ebp + 8]
and edi, ecx
mov dword [ebp + 0xc], edx
and dword [ebp + 0xc], esi
or edi, dword [ebp + 0xc]
add edi, dword [ebp - 0x30]
add edi, ebx
lea ebx, [edi + 0x5a827999]
add edi, 0x2827999
shl edi, 5
shr ebx, 0x1b
or ebx, edi
mov edi, dword [ebp + 8]
and edi, ebx
or edi, dword [ebp + 0xc]
mov dword [ebp - 4], ebx
add edi, dword [ebp - 0x20]
add ecx, edi
lea edi, [ecx + 0x5a827999]
add ecx, 0x27999
shl ecx, 9
shr edi, 0x17
or edi, ecx
mov ecx, edi
or ecx, esi
and ecx, ebx
mov ebx, edi
and ebx, esi
or ecx, ebx
add ecx, dword [ebp - 0x10]
add edx, ecx
lea ecx, [edx + 0x5a827999]
mov ebx, dword [ebp - 4]
add edx, 0x27999
shl edx, 0xd
shr ecx, 0x13
or ecx, edx
mov edx, ebx
xor edx, edi
xor edx, ecx
add edx, dword [ebp - 0x4c]
add esi, edx
lea edx, [esi + 0x6ed9eba1]
lea esi, [esi*8 + 0x76cf5d08]
shr edx, 0x1d
or edx, esi
mov esi, edi
xor esi, ecx
xor esi, edx
add esi, dword [ebp - 0x2c]
add ebx, esi
lea esi, [ebx - 0x26145f]
add ebx, 0x6ed9eba1
shr ebx, 0x17
shl esi, 9
or esi, ebx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, dword [ebp - 0x3c]
mov dword [ebp + 8], esi
add edi, ebx
lea ebx, [edi - 0x6145f]
add edi, 0x6ed9eba1
shr edi, 0x15
shl ebx, 0xb
or ebx, edi
xor dword [ebp + 8], ebx
mov edi, dword [ebp + 8]
xor edi, edx
add edi, dword [ebp - 0x1c]
add edi, ecx
lea ecx, [edi - 0x145f]
add edi, 0x6ed9eba1
shr edi, 0x11
shl ecx, 0xf
or ecx, edi
mov edi, dword [ebp + 8]
xor edi, ecx
add edi, dword [ebp - 0x44]
add edi, edx
lea edx, [edi + 0x6ed9eba1]
lea edi, [edi*8 + 0x76cf5d08]
shr edx, 0x1d
or edx, edi
mov edi, ebx
xor edi, ecx
xor edi, edx
add edi, dword [ebp - 0x24]
add esi, edi
lea edi, [esi - 0x26145f]
add esi, 0x6ed9eba1
shr esi, 0x17
shl edi, 9
or edi, esi
mov esi, edi
xor esi, ecx
xor esi, edx
add esi, dword [ebp - 0x34]
mov dword [ebp + 8], edi
add ebx, esi
lea esi, [ebx - 0x6145f]
add ebx, 0x6ed9eba1
shr ebx, 0x15
shl esi, 0xb
or esi, ebx
xor dword [ebp + 8], esi
mov ebx, dword [ebp + 8]
xor ebx, edx
add ebx, dword [ebp - 0x14]
add ebx, ecx
lea ecx, [ebx - 0x145f]
shl ecx, 0xf
add ebx, 0x6ed9eba1
shr ebx, 0x11
or ecx, ebx
mov ebx, dword [ebp + 8]
xor ebx, ecx
add ebx, dword [ebp - 0x48]
add ebx, edx
lea edx, [ebx + 0x6ed9eba1]
lea ebx, [ebx*8 + 0x76cf5d08]
shr edx, 0x1d
or edx, ebx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, dword [ebp - 0x28]
add edi, ebx
lea ebx, [edi - 0x26145f]
shl ebx, 9
add edi, 0x6ed9eba1
shr edi, 0x17
or ebx, edi
mov edi, ebx
xor edi, ecx
xor edi, edx
add edi, dword [ebp - 0x38]
mov dword [ebp + 8], ebx
add esi, edi
lea edi, [esi - 0x6145f]
add esi, 0x6ed9eba1
shr esi, 0x15
shl edi, 0xb
or edi, esi
xor dword [ebp + 8], edi
mov esi, dword [ebp + 8]
xor esi, edx
add esi, dword [ebp - 0x18]
add esi, ecx
lea ecx, [esi - 0x145f]
add esi, 0x6ed9eba1
shr esi, 0x11
shl ecx, 0xf
or ecx, esi
mov esi, dword [ebp + 8]
xor esi, ecx
add esi, dword [ebp - 0x40]
add esi, edx
lea edx, [esi + 0x6ed9eba1]
lea esi, [esi*8 + 0x76cf5d08]
shr edx, 0x1d
or edx, esi
mov esi, edi
xor esi, ecx
xor esi, edx
add esi, dword [ebp - 0x20]
add ebx, esi
lea esi, [ebx - 0x26145f]
add ebx, 0x6ed9eba1
shr ebx, 0x17
shl esi, 9
or esi, ebx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, dword [ebp - 0x30]
add ebx, edi
lea edi, [ebx - 0x6145f]
add ebx, 0x6ed9eba1
shr ebx, 0x15
shl edi, 0xb
or edi, ebx
mov ebx, esi
xor ebx, edi
xor ebx, edx
add ebx, dword [ebp - 0x10]
add ecx, ebx
lea ebx, [ecx - 0x145f]
add ecx, 0x6ed9eba1
shl ebx, 0xf
shr ecx, 0x11
or ebx, ecx
add dword [eax], edx
add dword [eax + 4], ebx
mov edx, dword [ebp - 8]
add dword [eax + 8], edi
add dword [eax + 0xc], esi
cmp edx, dword [ebp - 0xc]
mov ebx, dword [eax + 4]
jb 0x10176e7c
pop edi
pop esi
pop ebx
leave
ret