Function at 0x401420
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x148
push ebx
mov ebx, dword [esp + 0x150]
push ebp
push esi
push edi
xor ecx, ecx
lea edx, [ebx + 0x20]
mov eax, dword [edx - 4]
mov esi, eax
shl esi, 0x18
mov edi, eax
shr edi, 8
or esi, edi
and esi, 0xff00ff00
mov edi, eax
and edi, 0xff00
shl edi, 8
or esi, edi
shr eax, 0x18
or esi, eax
mov eax, dword [edx]
mov dword [esp + ecx*4 + 0x18], esi
mov esi, eax
shl esi, 0x18
mov edi, eax
shr edi, 8
or esi, edi
and esi, 0xff00ff00
mov edi, eax
and edi, 0xff00
shl edi, 8
or esi, edi
shr eax, 0x18
or esi, eax
mov eax, dword [edx + 4]
mov dword [esp + ecx*4 + 0x1c], esi
mov esi, eax
shl esi, 0x18
mov edi, eax
shr edi, 8
or esi, edi
and esi, 0xff00ff00
mov edi, eax
and edi, 0xff00
shl edi, 8
or esi, edi
shr eax, 0x18
or esi, eax
mov eax, dword [edx + 8]
mov dword [esp + ecx*4 + 0x20], esi
mov esi, eax
shl esi, 0x18
mov edi, eax
shr edi, 8
or esi, edi
mov edi, eax
and edi, 0xff00
and esi, 0xff00ff00
shl edi, 8
or esi, edi
shr eax, 0x18
or esi, eax
mov dword [esp + ecx*4 + 0x24], esi
add ecx, 4
add edx, 0x10
cmp ecx, 0x10
jb 0x401436
lea eax, [esp + 0x38]
mov dword [esp + 0x14], 0x10
lea esp, [esp]
mov ebp, dword [eax + 0x14]
mov ecx, dword [eax - 0x20]
mov edi, dword [eax]
mov esi, dword [eax - 0x18]
xor ecx, ebp
mov ebp, dword [eax + 0x18]
xor ecx, edi
mov edi, dword [eax - 0x14]
xor ecx, esi
mov edx, ecx
add ecx, ecx
shr edx, 0x1f
or edx, ecx
mov ecx, dword [eax - 0x1c]
xor ecx, ebp
xor ecx, dword [eax + 4]
xor ecx, edi
mov ebp, ecx
add ecx, ecx
shr ebp, 0x1f
or ebp, ecx
mov ecx, dword [eax + 0x1c]
mov dword [eax + 0x24], ebp
xor ecx, dword [eax - 0x10]
xor ecx, dword [eax + 8]
mov ebp, dword [eax + 0xc]
xor ecx, esi
mov esi, ecx
add ecx, ecx
shr esi, 0x1f
or esi, ecx
mov ecx, dword [eax - 0xc]
xor ecx, ebp
xor ecx, edx
xor ecx, edi
mov dword [eax + 0x20], edx
mov edx, ecx
add ecx, ecx
shr edx, 0x1f
or edx, ecx
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x28], esi
mov dword [eax + 0x2c], edx
add eax, 0x10
dec ecx
mov dword [esp + 0x14], ecx
jne 0x401500
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov edx, dword [ebx + 0x10]
mov esi, dword [ebx + 0x14]
mov edi, dword [ebx + 0x18]
mov dword [esp + 0x14], 0
lea ecx, [ecx]
mov ebp, eax
not ebp
and ebp, esi
mov dword [esp + 0x10], ecx
mov ebx, edx
and ebx, eax
xor ebp, ebx
mov ebx, ecx
shl ecx, 5
shr ebx, 0x1b
or ebx, ecx
add ebp, ebx
mov ebx, dword [esp + 0x14]
add ebp, dword [esp + ebx*4 + 0x18]
lea edi, [edi + ebp + 0x5a827999]
mov dword [esp + 0x14], esi
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], edi
mov esi, eax
not esi
and esi, edx
mov ebp, ecx
and ebp, eax
xor esi, ebp
mov ebp, edi
shr ebp, 0x1b
shl edi, 5
or ebp, edi
mov edi, dword [esp + 0x14]
add esi, ebp
add esi, dword [esp + ebx*4 + 0x1c]
lea esi, [esi + edi + 0x5a827999]
mov dword [esp + 0x14], edx
mov edx, eax
shr eax, 2
shl edx, 0x1e
or edx, eax
mov eax, dword [esp + 0x10]
mov edi, eax
not edi
and edi, ecx
mov dword [esp + 0x10], esi
mov ebp, edx
and ebp, eax
xor edi, ebp
mov ebp, esi
shr ebp, 0x1b
shl esi, 5
or ebp, esi
mov esi, dword [esp + 0x14]
add edi, ebp
add edi, dword [esp + ebx*4 + 0x20]
lea esi, [edi + esi + 0x5a827999]
mov dword [esp + 0x14], ecx
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov edi, eax
not edi
and edi, edx
mov ebp, ecx
and ebp, eax
xor edi, ebp
mov ebp, esi
mov dword [esp + 0x10], esi
shl esi, 5
shr ebp, 0x1b
or ebp, esi
mov esi, dword [esp + ebx*4 + 0x24]
add edi, ebp
add edi, esi
mov esi, dword [esp + 0x14]
lea ebp, [edi + esi + 0x5a827999]
mov esi, eax
shr eax, 2
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
mov edi, ecx
shl esi, 0x1e
or esi, eax
mov eax, edx
not eax
and eax, edi
mov ecx, esi
and ecx, edx
xor eax, ecx
mov ecx, ebp
shr ecx, 0x1b
mov dword [esp + 0x10], ebp
shl ebp, 5
or ecx, ebp
add eax, ecx
add eax, dword [esp + ebx*4 + 0x28]
mov ecx, dword [esp + 0x14]
lea ecx, [eax + ecx + 0x5a827999]
mov eax, edx
shl eax, 0x1e
shr edx, 2
add ebx, 5
or edx, eax
cmp ebx, 0x14
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
jb 0x401590
mov ebx, 0x14
mov dword [esp + 0x10], ecx
mov ebp, ecx
shr ebp, 0x1b
shl ecx, 5
or ebp, ecx
mov ecx, esi
xor ecx, edx
xor ecx, eax
add ebp, ecx
add ebp, dword [esp + ebx*4 + 0x18]
lea edi, [edi + ebp + 0x6ed9eba1]
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], edi
mov ebp, edi
shr ebp, 0x1b
shl edi, 5
or ebp, edi
mov edi, edx
xor edi, ecx
xor edi, eax
add ebp, edi
add ebp, dword [esp + ebx*4 + 0x1c]
lea esi, [esi + ebp + 0x6ed9eba1]
mov ebp, esi
mov edi, edx
mov edx, eax
shr ebp, 0x1b
shr eax, 2
shl edx, 0x1e
or edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], esi
shl esi, 5
or ebp, esi
mov esi, ecx
xor esi, edx
xor esi, eax
add ebp, esi
add ebp, dword [esp + ebx*4 + 0x20]
lea esi, [edi + ebp + 0x6ed9eba1]
mov edi, ecx
mov ecx, eax
mov ebp, esi
shl ecx, 0x1e
shr eax, 2
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], esi
shr ebp, 0x1b
shl esi, 5
or ebp, esi
mov esi, edx
xor esi, ecx
xor esi, eax
add ebp, esi
add ebp, dword [esp + ebx*4 + 0x24]
lea ebp, [edi + ebp + 0x6ed9eba1]
mov esi, eax
mov edi, ecx
shr eax, 2
mov ecx, ebp
shl esi, 0x1e
or esi, eax
mov eax, ebp
shl ebp, 5
shr ecx, 0x1b
or ecx, ebp
mov ebp, edi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
xor ebp, esi
xor ebp, edx
add ecx, ebp
add ecx, dword [esp + ebx*4 + 0x28]
mov ebp, dword [esp + 0x14]
lea ecx, [ecx + ebp + 0x6ed9eba1]
mov ebp, edx
shl ebp, 0x1e
shr edx, 2
add ebx, 5
or edx, ebp
cmp ebx, 0x28
jb 0x4016d6
mov dword [esp + 0x14], 0x28
lea ecx, [ecx]
mov ebp, edx
xor ebp, eax
and ebp, esi
mov dword [esp + 0x10], ecx
mov ebx, edx
and ebx, eax
xor ebp, ebx
mov ebx, ecx
shl ecx, 5
shr ebx, 0x1b
or ebx, ecx
add ebp, ebx
mov ebx, dword [esp + 0x14]
add ebp, dword [esp + ebx*4 + 0x18]
lea edi, [edi + ebp - 0x70e44324]
mov dword [esp + 0x14], esi
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], edi
mov esi, ecx
xor esi, eax
and esi, edx
mov ebp, ecx
and ebp, eax
xor esi, ebp
mov ebp, edi
shr ebp, 0x1b
shl edi, 5
or ebp, edi
mov edi, dword [esp + 0x14]
add esi, ebp
add esi, dword [esp + ebx*4 + 0x1c]
lea esi, [esi + edi - 0x70e44324]
mov dword [esp + 0x14], edx
mov edx, eax
shr eax, 2
shl edx, 0x1e
or edx, eax
mov eax, dword [esp + 0x10]
mov edi, edx
xor edi, eax
and edi, ecx
mov dword [esp + 0x10], esi
mov ebp, edx
and ebp, eax
xor edi, ebp
mov ebp, esi
shr ebp, 0x1b
shl esi, 5
or ebp, esi
mov esi, dword [esp + 0x14]
add edi, ebp
add edi, dword [esp + ebx*4 + 0x20]
lea esi, [edi + esi - 0x70e44324]
mov dword [esp + 0x14], ecx
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov edi, ecx
xor edi, eax
and edi, edx
mov ebp, ecx
and ebp, eax
xor edi, ebp
mov ebp, esi
mov dword [esp + 0x10], esi
shl esi, 5
shr ebp, 0x1b
or ebp, esi
mov esi, dword [esp + ebx*4 + 0x24]
add edi, ebp
add edi, esi
mov esi, dword [esp + 0x14]
lea ebp, [edi + esi - 0x70e44324]
mov esi, eax
shr eax, 2
mov edi, ecx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
shl esi, 0x1e
or esi, eax
mov eax, esi
xor eax, edx
and eax, edi
mov ecx, esi
and ecx, edx
xor eax, ecx
mov ecx, ebp
shr ecx, 0x1b
mov dword [esp + 0x10], ebp
shl ebp, 5
or ecx, ebp
add eax, ecx
add eax, dword [esp + ebx*4 + 0x28]
mov ecx, dword [esp + 0x14]
lea ecx, [eax + ecx - 0x70e44324]
mov eax, edx
shl eax, 0x1e
shr edx, 2
add ebx, 5
or edx, eax
cmp ebx, 0x3c
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
jb 0x4017e0
mov ebx, 0x3c
mov dword [esp + 0x10], ecx
mov ebp, ecx
shr ebp, 0x1b
shl ecx, 5
or ebp, ecx
mov ecx, esi
xor ecx, edx
xor ecx, eax
add ebp, ecx
add ebp, dword [esp + ebx*4 + 0x18]
lea edi, [edi + ebp - 0x359d3e2a]
mov ecx, eax
shr eax, 2
shl ecx, 0x1e
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], edi
mov ebp, edi
shr ebp, 0x1b
shl edi, 5
or ebp, edi
mov edi, edx
xor edi, ecx
xor edi, eax
add ebp, edi
add ebp, dword [esp + ebx*4 + 0x1c]
lea esi, [esi + ebp - 0x359d3e2a]
mov ebp, esi
mov edi, edx
mov edx, eax
shr ebp, 0x1b
shr eax, 2
shl edx, 0x1e
or edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], esi
shl esi, 5
or ebp, esi
mov esi, ecx
xor esi, edx
xor esi, eax
add ebp, esi
add ebp, dword [esp + ebx*4 + 0x20]
lea esi, [edi + ebp - 0x359d3e2a]
mov edi, ecx
mov ecx, eax
mov ebp, esi
shl ecx, 0x1e
shr eax, 2
or ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], esi
shr ebp, 0x1b
shl esi, 5
or ebp, esi
mov esi, edx
xor esi, ecx
xor esi, eax
add ebp, esi
add ebp, dword [esp + ebx*4 + 0x24]
lea ebp, [edi + ebp - 0x359d3e2a]
mov esi, eax
mov edi, ecx
shr eax, 2
mov ecx, ebp
shl esi, 0x1e
or esi, eax
mov eax, ebp
shl ebp, 5
shr ecx, 0x1b
or ecx, ebp
mov ebp, edi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x10]
xor ebp, esi
xor ebp, edx
add ecx, ebp
add ecx, dword [esp + ebx*4 + 0x28]
mov ebp, dword [esp + 0x14]
lea ecx, [ecx + ebp - 0x359d3e2a]
mov ebp, edx
shl ebp, 0x1e
shr edx, 2
add ebx, 5
or edx, ebp
cmp ebx, 0x50
jb 0x401926
mov ebx, dword [esp + 0x15c]
mov ebp, dword [ebx + 8]
add ebp, ecx
mov ecx, dword [ebx + 0xc]
add ecx, eax
mov eax, dword [ebx + 0x10]
add eax, edx
mov dword [ebx + 0x10], eax
mov eax, dword [ebx + 0x14]
add eax, esi
mov dword [ebx + 0x14], eax
mov eax, dword [ebx + 0x18]
add eax, edi
pop edi
pop esi
mov dword [ebx + 8], ebp
pop ebp
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x18], eax
pop ebx
add esp, 0x148
ret