Function at 0x402980
Capabilities:
Encode data using xor

Disassembly:
xor eax, eax
xor edx, edx
xor ecx, ecx
push ebp
push edi
push esi
push ebx
sub esp, 0xc4
mov eax, dword [esp + 0xdc]
mov esi, dword [esp + 0xd8]
mov ebx, dword [esp + 0xe0]
test eax, eax
lea edx, [eax + 0xf]
cmovs eax, edx
sar eax, 4
test eax, eax
mov dword [esp + 0x60], eax
jle 0x403084
lea eax, [ebx + 0x10]
mov edx, ebx
lea ecx, [ebx + 0x20]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], 0
mov dword [esp], ecx
lea esi, [esi]
mov eax, dword [edx]
movzx ecx, byte [edx]
mov dword [esp + 0x64], eax
mov eax, dword [edx + 4]
mov byte [esp + 0x30], cl
movzx ecx, byte [edx + 2]
mov dword [esp + 0x68], eax
mov eax, dword [edx + 8]
mov byte [esp + 4], cl
mov ecx, dword [esp]
cmp dword [esp + 0x5c], ecx
mov dword [esp + 0x6c], eax
mov eax, dword [edx + 0xc]
mov dword [esp + 0x70], eax
movzx eax, byte [edx + 1]
mov byte [esp + 0x20], al
movzx eax, byte [edx + 3]
mov byte [esp + 0x44], al
je 0x40308f
mov ebp, dword [esp + 0x5c]
mov edi, 0x1de5
movzx ebx, byte [ebp]
add ebp, 1
xor ebx, edi
mov eax, ebx
shl eax, 8
xor eax, ebx
mov edi, eax
shr edi, 5
xor edi, eax
cmp ebp, ecx
jne 0x402a25
mov ebx, edi
shr ebx, 0x1d
xor ebx, edi
mov eax, ebx
shl eax, 0x17
xor eax, ebx
mov ebx, eax
shr ebx, 0x13
xor ebx, eax
mov eax, ebx
shl eax, 0x11
xor eax, ebx
mov ebx, eax
shr ebx, 0xd
xor ebx, eax
mov eax, ebx
shl eax, 0xb
xor eax, ebx
mov ebx, eax
shr ebx, 7
xor ebx, eax
mov eax, ebx
shl eax, 5
xor eax, ebx
mov ebx, eax
shr ebx, 3
xor ebx, eax
lea eax, [ebx + ebx]
xor eax, ebx
mov ebp, eax
mov edi, eax
mov ebx, eax
mov dword [esp], ecx
shr ebp, 0x18
shr edi, 0x10
shr ebx, 8
mov ecx, ebp
mov byte [esp + 0x74], cl
mov ecx, edi
mov byte [esp + 0x75], cl
mov ecx, ebp
mov byte [esp + 0x78], cl
mov ecx, edi
mov byte [esp + 0x79], cl
mov ecx, ebp
mov byte [esp + 0x7c], cl
mov ecx, edi
mov byte [esp + 0x7d], cl
mov ecx, ebp
mov ebp, dword [edx + 0x10]
mov byte [esp + 0x76], bl
mov byte [esp + 0x7a], bl
mov byte [esp + 0x7e], bl
mov byte [esp + 0x80], cl
mov ecx, edi
mov edi, dword [edx + 0x14]
mov byte [esp + 0x82], bl
mov ebx, dword [edx + 0x18]
mov byte [esp + 0x7b], al
mov byte [esp + 0x7f], al
xor edi, dword [esp + 0x78]
xor ebx, dword [esp + 0x7c]
mov byte [esp + 0x81], cl
mov ecx, dword [edx]
mov byte [esp + 0x77], al
mov byte [esp + 0x83], al
mov eax, dword [edx + 0x1c]
xor ebp, dword [esp + 0x74]
xor eax, dword [esp + 0x80]
mov dword [edx + 0x14], edi
mov dword [edx + 0x18], ebx
xor edi, dword [edx + 4]
xor ebx, dword [edx + 8]
mov dword [edx + 0x10], ebp
xor ebp, ecx
mov dword [edx + 0x1c], eax
mov dword [esp + 0x54], ecx
mov dword [edx], ebp
mov dword [edx + 4], edi
mov dword [edx + 8], ebx
xor eax, dword [edx + 0xc]
mov dword [edx + 0xc], eax
xor ebp, dword [esi]
mov dword [edx], ebp
xor edi, dword [esi + 4]
mov dword [edx + 4], edi
xor ebx, dword [esi + 8]
mov dword [edx + 8], ebx
xor eax, dword [esi + 0xc]
mov dword [edx + 0xc], eax
movzx ebp, byte [esi]
movzx edi, byte [esi + 1]
movzx ebx, byte [esi + 2]
mov eax, ebp
xor eax, edi
xor eax, 0x39
xor eax, ebx
xor al, byte [esi + 3]
xor al, byte [esi + 4]
xor al, byte [esi + 5]
xor al, byte [esi + 6]
xor al, byte [esi + 7]
xor al, byte [esi + 8]
xor al, byte [esi + 9]
xor al, byte [esi + 0xa]
xor al, byte [esi + 0xb]
xor al, byte [esi + 0xc]
xor al, byte [esi + 0xd]
xor al, byte [esi + 0xe]
xor al, byte [esi + 0xf]
xor ebp, eax
xor ebx, eax
mov ecx, ebp
mov byte [esi], cl
mov ecx, eax
xor ecx, edi
mov byte [esi + 1], cl
mov byte [esp + 0x5a], cl
movzx ecx, byte [esi + 3]
mov byte [esi + 2], bl
mov byte [esp + 0x5b], bl
xor ecx, eax
mov byte [esp + 0x15], cl
mov byte [esi + 3], cl
movzx ecx, byte [esi + 4]
xor ecx, eax
mov byte [esi + 4], cl
mov byte [esp + 0x16], cl
movzx ecx, byte [esi + 5]
xor ecx, eax
mov byte [esi + 5], cl
mov byte [esp + 0x17], cl
movzx ecx, byte [esi + 6]
xor ecx, eax
mov byte [esi + 6], cl
mov byte [esp + 0x18], cl
movzx ecx, byte [esi + 7]
xor ecx, eax
mov byte [esi + 7], cl
mov byte [esp + 0x19], cl
movzx ecx, byte [esi + 8]
xor ecx, eax
mov byte [esi + 8], cl
mov byte [esp + 0x1a], cl
movzx ecx, byte [esi + 9]
xor ecx, eax
mov byte [esi + 9], cl
mov byte [esp + 0x1b], cl
movzx ecx, byte [esi + 0xa]
xor ecx, eax
mov byte [esi + 0xa], cl
mov byte [esp + 0x1c], cl
movzx ecx, byte [esi + 0xb]
xor ecx, eax
mov byte [esi + 0xb], cl
mov byte [esp + 0x1d], cl
movzx ecx, byte [esi + 0xc]
xor ecx, eax
mov byte [esi + 0xc], cl
mov byte [esp + 0x1e], cl
movzx ecx, byte [esi + 0xd]
xor ecx, eax
mov byte [esi + 0xd], cl
mov byte [esp + 0x1f], cl
movzx ecx, byte [esi + 0xe]
xor ecx, eax
xor al, byte [esi + 0xf]
mov byte [esi + 0xe], cl
mov byte [esp + 0x58], cl
mov byte [esp + 0x59], al
mov byte [esi + 0xf], al
movzx eax, byte [esp + 0x30]
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 1
mov dword [esp + 0x8c], 2
and eax, 0xf
lea ebx, [esp + eax*4 + 0x84]
movzx eax, byte [esp + 0x30]
mov dword [esp + 0x90], 3
mov dword [esp + 0x94], 4
mov dword [esp + 0x98], 5
shr al, 4
movzx eax, al
lea eax, [esp + eax*4 + 0x84]
mov dword [esp + 0x9c], 6
mov dword [esp + 0xa0], 7
mov dword [esp + 0xa4], 8
mov dword [esp + 0xa8], 9
mov dword [esp + 0xac], 0xa
mov dword [esp + 0xb0], 0xb
mov dword [esp + 0xb4], 0xc
mov dword [esp + 0xb8], 0xd
mov dword [esp + 0xbc], 0xe
mov dword [esp + 0xc0], 0xf
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x20]
and eax, 0xf
lea ebx, [esp + eax*4 + 0x84]
movzx eax, byte [esp + 0x20]
mov edi, dword [ebx]
shr al, 4
movzx eax, al
lea eax, [esp + eax*4 + 0x84]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 4]
and eax, 0xf
lea ebx, [esp + eax*4 + 0x84]
movzx eax, byte [esp + 4]
mov edi, dword [ebx]
shr al, 4
movzx eax, al
lea eax, [esp + eax*4 + 0x84]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x44]
and eax, 0xf
lea ebx, [esp + eax*4 + 0x84]
movzx eax, byte [esp + 0x44]
mov edi, dword [ebx]
shr al, 4
movzx eax, al
lea eax, [esp + eax*4 + 0x84]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x68]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x69]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6a]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6b]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6c]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6d]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6e]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x6f]
mov ebx, eax
and ebx, 0xf
shr al, 4
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x70]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x71]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x72]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea ebx, [esp + ebx*4 + 0x84]
lea eax, [esp + eax*4 + 0x84]
mov edi, dword [ebx]
mov ecx, dword [eax]
mov dword [ebx], ecx
mov dword [eax], edi
movzx eax, byte [esp + 0x73]
mov ebx, eax
shr al, 4
and ebx, 0xf
movzx eax, al
lea eax, [esp + eax*4 + 0x84]
lea ebx, [esp + ebx*4 + 0x84]
mov ecx, dword [eax]
mov edi, dword [ebx]
mov dword [ebx], ecx
mov ecx, ebp
mov dword [eax], edi
mov eax, dword [esp + 0x84]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x88]
movzx ecx, byte [esp + 0x5a]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x8c]
movzx ecx, byte [esp + 0x5b]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x90]
movzx ecx, byte [esp + 0x15]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x94]
movzx ecx, byte [esp + 0x16]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x98]
movzx ecx, byte [esp + 0x17]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x9c]
movzx ecx, byte [esp + 0x18]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xa0]
movzx ecx, byte [esp + 0x19]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xa4]
movzx ecx, byte [esp + 0x1a]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xa8]
movzx ecx, byte [esp + 0x1b]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xac]
movzx ecx, byte [esp + 0x1c]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xb0]
movzx ecx, byte [esp + 0x1d]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xb4]
movzx ecx, byte [esp + 0x1e]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xb8]
movzx ecx, byte [esp + 0x1f]
mov byte [esi + eax], cl
mov eax, dword [esp + 0xbc]
movzx ecx, byte [esp + 0x58]
add dword [esp + 0x40], 1
mov byte [esi + eax], cl
mov eax, dword [esp + 0xc0]
movzx ecx, byte [esp + 0x59]
mov byte [esi + eax], cl
mov eax, dword [esp + 0x54]
xor dword [esi], eax
mov eax, dword [esp + 0x68]
xor dword [esi + 4], eax
mov eax, dword [esp + 0x6c]
xor dword [esi + 8], eax
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x70]
xor dword [esi + 0xc], eax
add esi, 0x10
cmp dword [esp + 0x40], ecx
jne 0x4029d5
add esp, 0xc4
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0x23
mov ebx, 0xffffffaa
mov edi, 0x31
mov ebp, 0xffffffcd
jmp 0x402a96