Function at 0x402062
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push esi
mov esi, dword [ebp + 0xc]
mov ecx, esi
and ecx, 0x3f
mov eax, esi
sub eax, ecx
add eax, 0x40
push edi
push eax
mov dword [ebp - 0x10], eax
call fcn.0043be5a
push esi
push dword [ebp + 8]
mov edi, eax
push edi
mov dword [ebp - 0x1c], edi
call fcn.00427a30
lea eax, [edi + esi]
mov byte [eax], 1
mov ecx, dword [ebp - 0x10]
sub ecx, esi
dec ecx
push ecx
inc eax
push 0
push eax
call fcn.00428760
push 4
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x10]
lea eax, [edi + eax - 4]
push eax
call fcn.00427a30
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp - 0x10]
and dword [ebp - 0x18], 0
shr eax, 4
add esp, 0x28
dec eax
mov dword [esi], 0x52305e7
mov dword [esi + 4], 0x8a9bcd6e
mov dword [esi + 8], 0xffdcb398
mov dword [esi + 0xc], 0x7614a214
je 0x40279e
mov dword [ebp - 0x14], edi
push ebx
push 0x10
push dword [ebp - 0x14]
lea eax, [ebp - 0x2c]
push eax
call fcn.00427a30
mov edi, dword [esi + 4]
mov ebx, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi]
mov eax, edi
not eax
and eax, ecx
mov ecx, ebx
and ecx, edi
or eax, ecx
movzx ecx, byte [ebp - 0x2c]
add eax, ecx
add eax, edx
mov ecx, eax
shl eax, 3
shr ecx, 0x1d
or ecx, eax
mov edx, edi
and edx, ecx
mov eax, ecx
not eax
and eax, ebx
or eax, edx
movzx edx, byte [ebp - 0x2b]
add eax, edx
add eax, dword [esi + 0xc]
add esp, 0xc
mov edx, eax
shl eax, 7
shr edx, 0x19
or edx, eax
mov eax, edx
not eax
and eax, edi
mov edi, edx
and edi, ecx
or eax, edi
movzx edi, byte [ebp - 0x2a]
add eax, edi
add eax, ebx
mov edi, eax
shl eax, 0xb
shr edi, 0x15
or edi, eax
mov eax, edi
not eax
and eax, ecx
mov ebx, edx
and ebx, edi
or eax, ebx
movzx ebx, byte [ebp - 0x29]
add eax, ebx
add eax, dword [esi + 4]
mov dword [ebp + 0x10], edi
mov ebx, eax
shr eax, 0xd
shl ebx, 0x13
or ebx, eax
mov eax, ebx
not eax
and eax, edx
and edi, ebx
or eax, edi
movzx edi, byte [ebp - 0x28]
add eax, edi
movzx edi, byte [ebp - 0x27]
add eax, ecx
mov ecx, eax
shl eax, 3
shr ecx, 0x1d
or ecx, eax
mov eax, ecx
not eax
and eax, dword [ebp + 0x10]
mov dword [ebp - 4], ecx
mov ecx, ebx
and ecx, dword [ebp - 4]
or eax, ecx
add eax, edi
add eax, edx
mov ecx, eax
shl eax, 7
movzx edx, byte [ebp - 0x26]
shr ecx, 0x19
or ecx, eax
mov eax, ecx
not eax
and eax, ebx
mov edi, ecx
and edi, dword [ebp - 4]
or eax, edi
add eax, edx
add eax, dword [ebp + 0x10]
mov edi, ecx
mov edx, eax
shl eax, 0xb
shr edx, 0x15
or edx, eax
and edi, edx
mov eax, edx
not eax
and eax, dword [ebp - 4]
or eax, edi
movzx edi, byte [ebp - 0x25]
add eax, edi
add eax, ebx
mov edi, eax
shr eax, 0xd
shl edi, 0x13
or edi, eax
mov eax, edi
not eax
and eax, ecx
mov ebx, edx
and ebx, edi
or eax, ebx
movzx ebx, byte [ebp - 0x24]
add eax, ebx
add eax, dword [ebp - 4]
mov dword [ebp - 0xc], edi
mov ebx, eax
shl eax, 3
shr ebx, 0x1d
or ebx, eax
and edi, ebx
mov eax, ebx
not eax
and eax, edx
or eax, edi
movzx edi, byte [ebp - 0x23]
add eax, edi
add eax, ecx
mov ecx, eax
shl eax, 7
shr ecx, 0x19
or ecx, eax
mov eax, ecx
not eax
and eax, dword [ebp - 0xc]
mov edi, ecx
and edi, ebx
or eax, edi
movzx edi, byte [ebp - 0x22]
add eax, edi
add eax, edx
movzx edx, byte [ebp - 0x21]
mov edi, eax
shl eax, 0xb
shr edi, 0x15
or edi, eax
mov eax, edi
not eax
mov dword [ebp + 0xc], ecx
and eax, ebx
and ecx, edi
mov dword [ebp + 0x10], edi
or eax, ecx
add eax, edx
add eax, dword [ebp - 0xc]
mov edx, edi
mov ecx, eax
shr eax, 0xd
shl ecx, 0x13
or ecx, eax
and edx, ecx
mov eax, ecx
not eax
and eax, dword [ebp + 0xc]
mov dword [ebp - 0xc], ecx
or eax, edx
movzx edx, byte [ebp - 0x20]
add eax, edx
add eax, ebx
mov edx, eax
shl eax, 3
movzx ebx, byte [ebp - 0x1f]
shr edx, 0x1d
or edx, eax
mov eax, edx
not eax
and eax, edi
mov edi, ecx
and edi, edx
or eax, edi
add eax, ebx
add eax, dword [ebp + 0xc]
movzx ebx, byte [ebp - 0x1e]
mov edi, eax
shl eax, 7
shr edi, 0x19
or edi, eax
mov eax, edi
not eax
and eax, ecx
mov ecx, edi
and ecx, edx
or eax, ecx
add eax, ebx
add eax, dword [ebp + 0x10]
mov ebx, edi
mov ecx, eax
shl eax, 0xb
shr ecx, 0x15
or ecx, eax
and ebx, ecx
mov eax, ecx
not eax
and eax, edx
or eax, ebx
movzx ebx, byte [ebp - 0x1d]
add eax, ebx
add eax, dword [ebp - 0xc]
mov ebx, eax
shr eax, 0xd
shl ebx, 0x13
or ebx, eax
mov dword [ebp - 0xc], ebx
mov eax, ecx
or eax, ebx
and eax, edi
mov ebx, ecx
and ebx, dword [ebp - 0xc]
or eax, ebx
mov ebx, eax
movzx eax, byte [ebp - 0x2c]
add ebx, eax
lea eax, [ebx + edx + 0x5a827999]
mov ebx, dword [ebp - 0xc]
mov edx, eax
shl eax, 3
shr edx, 0x1d
or edx, eax
mov eax, dword [ebp - 0xc]
or ebx, edx
and eax, edx
mov dword [ebp - 8], ebx
mov dword [ebp + 0x10], eax
and ebx, ecx
or ebx, eax
movzx eax, byte [ebp - 0x28]
add ebx, eax
lea edi, [ebx + edi + 0x5a827999]
mov eax, dword [ebp - 8]
mov ebx, edi
shl edi, 5
shr ebx, 0x1b
or ebx, edi
movzx edi, byte [ebp - 0x24]
and eax, ebx
or eax, dword [ebp + 0x10]
mov dword [ebp + 0xc], ebx
add eax, edi
lea ecx, [eax + ecx + 0x5a827999]
mov eax, ecx
shl ecx, 9
shr eax, 0x17
or eax, ecx
mov edi, eax
or edi, edx
and edi, ebx
mov ecx, eax
and ecx, edx
or edi, ecx
movzx ecx, byte [ebp - 0x20]
add edi, ecx
mov ecx, dword [ebp - 0xc]
lea edi, [edi + ecx + 0x5a827999]
mov ecx, edi
shl edi, 0xd
shr ecx, 0x13
or ecx, edi
mov edi, eax
or edi, ecx
and edi, ebx
mov ebx, eax
and ebx, ecx
or edi, ebx
mov ebx, edi
movzx edi, byte [ebp - 0x2b]
add ebx, edi
lea edx, [ebx + edx + 0x5a827999]
mov edi, edx
shl edx, 3
shr edi, 0x1d
or edi, edx
mov dword [ebp - 4], edi
mov edx, ecx
or edx, edi
mov ebx, edx
and ebx, eax
mov dword [ebp + 0x10], ecx
and dword [ebp + 0x10], edi
or ebx, dword [ebp + 0x10]
movzx edi, byte [ebp - 0x27]
add ebx, edi
mov edi, dword [ebp + 0xc]
lea ebx, [ebx + edi + 0x5a827999]
mov edi, ebx
shl ebx, 5
shr edi, 0x1b
or edi, ebx
movzx ebx, byte [ebp - 0x23]
and edx, edi
or edx, dword [ebp + 0x10]
add edx, ebx
lea edx, [edx + eax + 0x5a827999]
mov eax, edx
shl edx, 9
shr eax, 0x17
or eax, edx
mov ebx, eax
or ebx, dword [ebp - 4]
mov edx, eax
and edx, dword [ebp - 4]
and ebx, edi
or ebx, edx
movzx edx, byte [ebp - 0x1f]
add ebx, edx
lea ecx, [ebx + ecx + 0x5a827999]
mov edx, ecx
shl ecx, 0xd
shr edx, 0x13
or edx, ecx
mov ebx, eax
or ebx, edx
and ebx, edi
mov ecx, eax
and ecx, edx
or ebx, ecx
movzx ecx, byte [ebp - 0x2a]
add ebx, ecx
mov ecx, dword [ebp - 4]
lea ebx, [ebx + ecx + 0x5a827999]
mov ecx, ebx
shl ebx, 3
shr ecx, 0x1d
or ecx, ebx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
or dword [ebp - 8], ecx
mov ebx, dword [ebp - 8]
and ebx, eax
mov dword [ebp + 0x10], edx
and dword [ebp + 0x10], ecx
or ebx, dword [ebp + 0x10]
movzx ecx, byte [ebp - 0x26]
add ebx, ecx
lea ecx, [ebx + edi + 0x5a827999]
movzx ebx, byte [ebp - 0x22]
mov edi, ecx
shl ecx, 5
shr edi, 0x1b
or edi, ecx
mov ecx, dword [ebp - 8]
and ecx, edi
or ecx, dword [ebp + 0x10]
mov dword [ebp + 0xc], edi
add ecx, ebx
lea ecx, [ecx + eax + 0x5a827999]
mov eax, ecx
shl ecx, 9
shr eax, 0x17
or eax, ecx
mov ebx, eax
or ebx, dword [ebp - 4]
mov ecx, eax
and ecx, dword [ebp - 4]
and ebx, edi
or ebx, ecx
movzx ecx, byte [ebp - 0x1e]
add ebx, ecx
lea edx, [ebx + edx + 0x5a827999]
mov ecx, edx
shl edx, 0xd
shr ecx, 0x13
or ecx, edx
mov ebx, eax
or ebx, ecx
and ebx, edi
mov edx, eax
and edx, ecx
or ebx, edx
movzx edx, byte [ebp - 0x29]
add ebx, edx
mov edx, dword [ebp - 4]
lea edi, [ebx + edx + 0x5a827999]
mov edx, edi
shl edi, 3
shr edx, 0x1d
or edx, edi
movzx edi, byte [ebp - 0x25]
mov dword [ebp - 8], ecx
or dword [ebp - 8], edx
mov ebx, dword [ebp - 8]
mov dword [ebp + 0x10], ecx
and dword [ebp + 0x10], edx
and ebx, eax
or ebx, dword [ebp + 0x10]
add ebx, edi
mov edi, dword [ebp + 0xc]
lea edi, [ebx + edi + 0x5a827999]
mov ebx, edi
shr ebx, 0x1b
shl edi, 5
or ebx, edi
mov edi, dword [ebp - 8]
and edi, ebx
or edi, dword [ebp + 0x10]
mov dword [ebp + 0xc], ebx
movzx ebx, byte [ebp - 0x21]
add edi, ebx
lea eax, [edi + eax + 0x5a827999]
mov edi, eax
shl eax, 9
shr edi, 0x17
or edi, eax
mov ebx, edi
or ebx, edx
and ebx, dword [ebp + 0xc]
mov eax, edi
and eax, edx
or ebx, eax
movzx eax, byte [ebp - 0x1d]
add ebx, eax
lea ecx, [ebx + ecx + 0x5a827999]
mov ebx, dword [ebp + 0xc]
xor ebx, edi
mov eax, ecx
shr eax, 0x13
shl ecx, 0xd
or eax, ecx
movzx ecx, byte [ebp - 0x2c]
xor ebx, eax
add ebx, ecx
lea edx, [ebx + edx + 0x6ed9eba1]
mov ecx, edx
shl edx, 3
mov ebx, edi
xor ebx, eax
shr ecx, 0x1d
or ecx, edx
movzx edx, byte [ebp - 0x24]
xor ebx, ecx
add ebx, edx
mov edx, dword [ebp + 0xc]
lea ebx, [ebx + edx + 0x6ed9eba1]
mov edx, ebx
shr edx, 0x17
shl ebx, 9
or edx, ebx
mov ebx, edx
xor ebx, eax
mov dword [ebp + 0xc], edx
movzx edx, byte [ebp - 0x28]
xor ebx, ecx
add ebx, edx
mov edx, dword [ebp + 0xc]
lea edi, [ebx + edi + 0x6ed9eba1]
mov ebx, edi
shl edi, 0xb
shr ebx, 0x15
or ebx, edi
xor edx, ebx
mov dword [ebp + 0x10], edx
mov edi, edx
movzx edx, byte [ebp - 0x20]
xor edi, ecx
add edi, edx
lea eax, [edi + eax + 0x6ed9eba1]
movzx edi, byte [ebp - 0x2a]
mov edx, eax
shl eax, 0xf
shr edx, 0x11
or edx, eax
mov eax, dword [ebp + 0x10]
xor eax, edx
add eax, edi
lea ecx, [eax + ecx + 0x6ed9eba1]
mov eax, ecx
mov edi, ebx
xor edi, edx
shl ecx, 3
shr eax, 0x1d
or eax, ecx
movzx ecx, byte [ebp - 0x22]
xor edi, eax
add edi, ecx
mov ecx, dword [ebp + 0xc]
lea edi, [edi + ecx + 0x6ed9eba1]
mov ecx, edi
shl edi, 9
shr ecx, 0x17
or ecx, edi
mov dword [ebp + 0xc], ecx
mov edi, ecx
movzx ecx, byte [ebp - 0x26]
xor edi, edx
xor edi, eax
add edi, ecx
lea ebx, [edi + ebx + 0x6ed9eba1]
mov ecx, dword [ebp + 0xc]
mov edi, ebx
shl ebx, 0xb
shr edi, 0x15
or edi, ebx
xor ecx, edi
mov dword [ebp + 0x10], ecx
mov ebx, ecx
movzx ecx, byte [ebp - 0x1e]
xor ebx, eax
add ebx, ecx
lea edx, [ebx + edx + 0x6ed9eba1]
movzx ebx, byte [ebp - 0x2b]
mov ecx, edx
shl edx, 0xf
shr ecx, 0x11
or ecx, edx
mov edx, dword [ebp + 0x10]
xor edx, ecx
add edx, ebx
lea edx, [edx + eax + 0x6ed9eba1]
mov eax, edx
shl edx, 3
mov ebx, edi
xor ebx, ecx
shr eax, 0x1d
or eax, edx
movzx edx, byte [ebp - 0x23]
xor ebx, eax
add ebx, edx
mov edx, dword [ebp + 0xc]
lea ebx, [ebx + edx + 0x6ed9eba1]
mov edx, ebx
shl ebx, 9
shr edx, 0x17
or edx, ebx
mov ebx, edx
xor ebx, ecx
mov dword [ebp + 0xc], edx
movzx edx, byte [ebp - 0x27]
xor ebx, eax
add ebx, edx
lea edi, [ebx + edi + 0x6ed9eba1]
mov edx, edi
shl edi, 0xb
shr edx, 0x15
or edx, edi
mov edi, dword [ebp + 0xc]
xor edi, edx
mov ebx, edi
mov dword [ebp + 0x10], edi
movzx edi, byte [ebp - 0x1f]
xor ebx, eax
add ebx, edi
lea edi, [ebx + ecx + 0x6ed9eba1]
mov ecx, edi
shl edi, 0xf
shr ecx, 0x11
or ecx, edi
mov edi, dword [ebp + 0x10]
movzx ebx, byte [ebp - 0x29]
xor edi, ecx
add edi, ebx
lea edi, [edi + eax + 0x6ed9eba1]
mov eax, edi
shr eax, 0x1d
shl edi, 3
or eax, edi
movzx edi, byte [ebp - 0x21]
mov ebx, edx
xor ebx, ecx
xor ebx, eax
add ebx, edi
mov edi, dword [ebp + 0xc]
lea ebx, [ebx + edi + 0x6ed9eba1]
mov edi, ebx
shl ebx, 9
shr edi, 0x17
or edi, ebx
mov dword [ebp + 0xc], edi
mov ebx, edi
movzx edi, byte [ebp - 0x25]
xor ebx, ecx
xor ebx, eax
add ebx, edi
lea edx, [ebx + edx + 0x6ed9eba1]
mov ebx, dword [ebp + 0xc]
mov edi, edx
shl edx, 0xb
shr edi, 0x15
or edi, edx
movzx edx, byte [ebp - 0x1d]
xor ebx, edi
xor ebx, eax
add dword [ebp - 0x14], 0x10
add ebx, edx
mov edx, dword [esi]
add edx, eax
lea ecx, [ebx + ecx + 0x6ed9eba1]
mov eax, ecx
shr eax, 0x11
shl ecx, 0xf
or eax, ecx
add eax, dword [esi + 4]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
add eax, edi
mov dword [esi + 8], eax
mov eax, dword [esi + 0xc]
add eax, ecx
inc dword [ebp - 0x18]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x10]
shr eax, 4
dec eax
cmp dword [ebp - 0x18], eax
mov dword [esi], edx
jb 0x4020f0
mov edi, dword [ebp - 0x1c]
pop ebx
push edi
call fcn.0043be55
pop ecx
pop edi
pop esi
leave
ret