Function at 0x40ade0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
mov esi, dword [esp + 0x120]
lea eax, [esi + 0x8f12]
push 0x90
push 8
push eax
call fcn.0040c8d0
add esp, 0xc
lea eax, [esi + 0x8fa2]
push 0x70
push 9
push eax
call fcn.0040c8d0
add esp, 0xc
mov dword [esi + 0x9012], 0x7070707
mov dword [esi + 0x9016], 0x7070707
mov dword [esi + 0x901a], 0x7070707
mov dword [esi + 0x901e], 0x7070707
mov dword [esi + 0x9022], 0x7070707
mov dword [esi + 0x9026], 0x7070707
mov dword [esi + 0x902e], 0x8080808
mov dword [esi + 0x902a], 0x8080808
mov dword [esi + 0x9032], 0x5050505
mov dword [esi + 0x9036], 0x5050505
mov dword [esi + 0x903a], 0x5050505
mov dword [esi + 0x903e], 0x5050505
mov dword [esi + 0x9042], 0x5050505
mov dword [esi + 0x9046], 0x5050505
mov dword [esi + 0x904a], 0x5050505
mov dword [esi + 0x904e], 0x5050505
lea eax, [esp + 4]
push 0x84
push 0
push eax
call fcn.0040c8d0
add esp, 0xc
xor eax, eax
movzx ecx, byte [esi + eax + 0x8f12]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x8f13]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x8f14]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x8f15]
inc dword [esp + ecx*4 + 4]
add eax, 4
cmp eax, 0x120
jne 0x40aed0
mov dword [esp + 0x8c], 0
mov eax, dword [esp + 8]
add eax, eax
mov dword [esp + 0x90], eax
add eax, dword [esp + 0xc]
add eax, eax
mov dword [esp + 0x94], eax
add eax, dword [esp + 0x10]
add eax, eax
mov dword [esp + 0x98], eax
add eax, dword [esp + 0x14]
add eax, eax
mov dword [esp + 0x9c], eax
add eax, dword [esp + 0x18]
add eax, eax
mov dword [esp + 0xa0], eax
add eax, dword [esp + 0x1c]
add eax, eax
mov dword [esp + 0xa4], eax
add eax, dword [esp + 0x20]
add eax, eax
mov dword [esp + 0xa8], eax
add eax, dword [esp + 0x24]
add eax, eax
mov dword [esp + 0xac], eax
add eax, dword [esp + 0x28]
add eax, eax
mov dword [esp + 0xb0], eax
add eax, dword [esp + 0x2c]
add eax, eax
mov dword [esp + 0xb4], eax
add eax, dword [esp + 0x30]
add eax, eax
mov dword [esp + 0xb8], eax
add eax, dword [esp + 0x34]
add eax, eax
mov dword [esp + 0xbc], eax
add eax, dword [esp + 0x38]
add eax, eax
mov dword [esp + 0xc0], eax
add eax, dword [esp + 0x3c]
add eax, eax
mov dword [esp + 0xc4], eax
xor eax, eax
jmp 0x40afeb
mov esi, dword [esp + 0x120]
mov word [esi + eax*2 + 0x8852], bx
inc eax
cmp eax, 0x120
je 0x40b08a
movzx ebp, byte [esi + eax + 0x8f12]
test ebp, ebp
je 0x40afdf
mov esi, dword [esp + ebp*4 + 0x88]
lea ebx, [esi + 1]
mov dword [esp + ebp*4 + 0x88], ebx
xor ebx, ebx
cmp ebp, 1
mov dword [esp], ebp
je 0x40b061
and ebp, 0xfffffffe
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edi, [ebx + ebx]
mov ecx, esi
not ecx
or ecx, 1
lea edx, [esi + ecx]
inc edx
mov ecx, edx
not ecx
and ecx, edi
xor edx, edi
lea ebx, [edx + ebx*2]
sub ebx, ecx
mov ecx, esi
shr ecx, 1
lea edx, [ebx + ebx]
mov edi, ecx
not edi
or edi, 1
add ecx, edi
inc ecx
mov edi, ecx
not edi
and edi, edx
xor ecx, edx
lea ebx, [ecx + ebx*2]
sub ebx, edi
shr esi, 2
add ebp, 0xfffffffe
jne 0x40b020
test byte [esp], 1
je 0x40afd0
lea ecx, [ebx + ebx]
mov edx, esi
not edx
or edx, 1
add edx, esi
inc edx
mov esi, edx
not esi
and esi, ecx
xor edx, ecx
lea ebx, [edx + ebx*2]
sub ebx, esi
jmp 0x40afd0
push 0x84
push 0
lea eax, [esp + 0xc]
push eax
call fcn.0040c8d0
add esp, 0xc
xor eax, eax
movzx ecx, byte [esi + eax + 0x9032]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x9033]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x9034]
inc dword [esp + ecx*4 + 4]
movzx ecx, byte [esi + eax + 0x9035]
inc dword [esp + ecx*4 + 4]
add eax, 4
cmp eax, 0x20
jne 0x40b0a0
mov dword [esp + 0x8c], 0
mov eax, dword [esp + 8]
add eax, eax
mov dword [esp + 0x90], eax
add eax, dword [esp + 0xc]
add eax, eax
mov dword [esp + 0x94], eax
add eax, dword [esp + 0x10]
add eax, eax
mov dword [esp + 0x98], eax
add eax, dword [esp + 0x14]
add eax, eax
mov dword [esp + 0x9c], eax
add eax, dword [esp + 0x18]
add eax, eax
mov dword [esp + 0xa0], eax
add eax, dword [esp + 0x1c]
add eax, eax
mov dword [esp + 0xa4], eax
add eax, dword [esp + 0x20]
add eax, eax
mov dword [esp + 0xa8], eax
add eax, dword [esp + 0x24]
add eax, eax
mov dword [esp + 0xac], eax
add eax, dword [esp + 0x28]
add eax, eax
mov dword [esp + 0xb0], eax
add eax, dword [esp + 0x2c]
add eax, eax
mov dword [esp + 0xb4], eax
add eax, dword [esp + 0x30]
add eax, eax
mov dword [esp + 0xb8], eax
add eax, dword [esp + 0x34]
add eax, eax
mov dword [esp + 0xbc], eax
add eax, dword [esp + 0x38]
add eax, eax
mov dword [esp + 0xc0], eax
add eax, dword [esp + 0x3c]
add eax, eax
mov dword [esp + 0xc4], eax
xor eax, eax
jmp 0x40b1b9
mov esi, dword [esp + 0x120]
mov word [esi + eax*2 + 0x8a92], di
inc eax
cmp eax, 0x20
je 0x40b25a
movzx ebx, byte [esi + eax + 0x9032]
test ebx, ebx
je 0x40b1af
mov ecx, dword [esp + ebx*4 + 0x88]
lea esi, [ecx + 1]
mov dword [esp + ebx*4 + 0x88], esi
xor edi, edi
cmp ebx, 1
mov dword [esp], ebx
je 0x40b231
and ebx, 0xfffffffe
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea esi, [edi + edi]
mov ebp, ecx
not ebp
or ebp, 1
lea edx, [ecx + ebp]
inc edx
mov ebp, edx
not ebp
and ebp, esi
xor edx, esi
lea edi, [edx + edi*2]
sub edi, ebp
mov edx, ecx
shr edx, 1
lea esi, [edi + edi]
mov ebp, edx
not ebp
or ebp, 1
add edx, ebp
inc edx
mov ebp, edx
not ebp
and ebp, esi
xor edx, esi
lea edi, [edx + edi*2]
sub edi, ebp
shr ecx, 2
add ebx, 0xfffffffe
jne 0x40b1f0
test byte [esp], 1
je 0x40b1a0
lea edx, [edi + edi]
mov esi, ecx
not esi
or esi, 1
add ecx, esi
inc ecx
mov esi, ecx
not esi
and esi, edx
xor ecx, edx
lea edi, [ecx + edi*2]
sub edi, esi
jmp 0x40b1a0
mov ecx, dword [esi + 0x44]
mov eax, dword [esi + 0x48]
bts eax, ecx
mov dword [esi + 0x48], eax
add ecx, 2
mov dword [esi + 0x44], ecx
cmp ecx, 8
jae 0x40b291
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret
shr eax, 8
mov dword [esi + 0x48], eax
add ecx, 0xfffffff8
mov dword [esi + 0x44], ecx
cmp ecx, 7
jbe 0x40b271
mov edx, dword [esi + 0x30]
cmp edx, dword [esi + 0x34]
jae 0x40b280
lea ecx, [edx + 1]
mov dword [esi + 0x30], ecx
mov byte [edx], al
mov ecx, dword [esi + 0x44]
mov eax, dword [esi + 0x48]
jmp 0x40b280