Function at 0x40dc90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
cmp dword [ecx + 0x20], 0
je 0x40e278
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.0040a8a0
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x7c], 0xcc4c4948
mov word [esp + 0x80], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xf2
xor cl, byte [esp + eax + 0x7c]
add cl, 0x46
mov byte [esp + eax + 0x7c], cl
inc eax
cmp eax, 6
jne 0x40dce0
mov eax, dword [esp + 0x7c]
push dword [eax + 0x14]
call fcn.0040d0f0
add esp, 4
call fcn.0040d100
mov dword [esp + 0x18], eax
mov ebp, eax
and ebp, 0xf
mov edi, 0xfffffff0
mov ebx, 0x38e38e39
nop
nop
nop
call fcn.0040d100
mov ecx, eax
imul ebx
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
shl edx, 2
lea eax, [edx + edx*8]
neg eax
movzx eax, byte [ecx + eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esi + edi + 0x70], al
inc edi
cmp ebp, edi
jne 0x40dd20
mov dword [esp + 0x14], ebp
mov byte [esi + edi + 0x70], 0
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 6], al
mov byte [esp + 7], 0
mov eax, dword [esp + 8]
add eax, 0x400
push eax
call fcn.0040c9f0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x7c], 0xa7ab56a8
mov byte [esp + 0x80], 0xc4
mov dword [esp + 0x81], 0
mov byte [esp + 0x85], 0
mov eax, 0x73e820d0
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x73e82054]
xor ecx, eax
add ecx, 0x3e8812ba
mov edx, ecx
and edx, 0x6f
xor ecx, 0xef
lea ecx, [ecx + edx*2]
add cl, 0x47
mov byte [esp + eax - 0x73e82054], cl
inc eax
cmp eax, 0x73e820da
jne 0x40ddc0
lea eax, [esp + 0x7c]
mov dword [esp + 0xc], esi
mov ecx, esi
push 0x4498c4
push eax
push dword [esp + 8]
call fcn.0040d580
mov dword [esp + 0x7c], 0xe11a1c14
mov dword [esp + 0x80], 0
xor ebx, ebx
mov edi, 0xffffffff
mov ebp, 1
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
or eax, 0x8ae10729
lea ecx, [ebx + eax]
inc ecx
mov edx, ecx
mov esi, ecx
add eax, ebp
shr al, 1
and al, 1
or cl, 2
mul cl
not edx
and esi, 0xfd
and edx, 2
imul edx, esi
mov ecx, ebx
and cl, 1
add cl, cl
mov ah, 0x28
sub ah, cl
add al, al
add dl, al
movzx ecx, dl
movzx eax, ah
add eax, ebx
add eax, ecx
inc al
xor al, byte [esp + ebx + 0x7c]
add al, 0x33
mov byte [esp + ebx + 0x7c], al
inc ebx
dec edi
inc ebp
cmp ebx, 8
jne 0x40de30
lea eax, [esp + 6]
mov ebp, dword [esp + 0xc]
mov ecx, ebp
push eax
lea eax, [esp + 0x80]
push eax
push dword [esp + 8]
call fcn.0040d580
mov eax, dword [str.tLYMe5__222]
mov dword [esp + 0x7c], 0x23c6b8bc
mov word [esp + 0x80], 0
mov byte [esp + 0x82], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x7c]
mov edx, ecx
or edx, esi
or edx, 0xf8
lea edi, [ecx + 0xf8]
and edi, esi
sub edx, edi
add dl, 0x28
mov byte [esp + ecx + 0x7c], dl
inc ecx
cmp ecx, 7
jne 0x40ded0
mov ecx, ebp
push eax
lea eax, [esp + 0x80]
push eax
push dword [esp + 8]
call fcn.0040d580
mov dword [esp + 0x7c], 0xb5a0a8b9
mov dword [esp + 0x80], 0xa0b5bcb1
mov dword [esp + 0x84], 0xbebfb4a1
mov byte [esp + 0x88], 0x58
mov dword [esp + 0x89], 0
mov word [esp + 0x8d], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x7c]
lea ecx, [eax + 0x1699b18d]
mov esi, 0x69664e72
sub esi, eax
and esi, 0x48660c66
and ecx, 0x16890119
or ecx, esi
xor ecx, edx
mov edx, ecx
xor edx, 0x4876bce6
mov esi, edx
and esi, 0x3e
mov edi, ecx
and edi, 0x3e
xor edi, 0x26
or edi, esi
xor ecx, 8
and ecx, 0xc
and edx, 0xf3
or edx, ecx
xor edx, 0x32
or edx, esi
add edx, edi
inc dl
mov byte [esp + eax + 0x7c], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x13
jb 0x40df50
mov dword [esp + 0x1c], 0x33be9291
mov word [esp + 0x20], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1c]
mov esi, eax
and esi, 8
mov edi, ecx
xor edi, 0xe5ba8c0c
add edi, esi
mov ebx, edi
and ebx, edx
add ebx, ebx
sub ebx, edi
mov esi, edx
not esi
and esi, ebx
not ebx
and ebx, edx
sub ebx, esi
add bl, 0xc4
mov byte [esp + ecx + 0x1c], bl
inc ecx
add eax, 2
cmp ecx, 6
jne 0x40dfd0
lea edx, [esp + 0x1c]
mov ecx, ebp
lea eax, [esp + 0x7c]
push eax
push edx
push dword [esp + 8]
call fcn.0040d580
mov dword [esp + 0x7c], 0xd2dedcd6
mov byte [esp + 0x80], 0x48
mov word [esp + 0x81], 0
mov byte [esp + 0x83], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x73
xor cl, byte [esp + eax + 0x7c]
add cl, 0xc1
mov byte [esp + eax + 0x7c], cl
inc eax
cmp eax, 8
jne 0x40e050
mov ecx, ebp
push dword [esp + 8]
push dword [esp + 0x14]
lea eax, [esp + 0x84]
push eax
push dword [esp + 0xc]
call fcn.0040d830
mov dword [esp + 0x1c], 0x719f0f49
mov dword [esp + 0x20], 0x75e673de
mov dword [esp + 0x24], 0x79d877d3
mov dword [esp + 0x28], 0x7d157bec
mov dword [esp + 0x2c], 0x61e57fc8
mov dword [esp + 0x30], 0x65c563f0
mov dword [esp + 0x34], 0x6906673e
mov dword [esp + 0x38], 0x6dfd6bc7
mov dword [esp + 0x3c], 0x51fa6fc0
mov dword [esp + 0x40], 0x55c253fb
mov dword [esp + 0x44], 0x59c457f7
mov dword [esp + 0x48], 0x5d0b5bcc
mov dword [esp + 0x4c], 0x41cf5ffa
mov dword [esp + 0x50], 0x45ed43d2
mov dword [esp + 0x54], 0x49e2472b
mov dword [esp + 0x58], 0x4dde4beb
mov dword [esp + 0x5c], 0xb1134fef
mov dword [esp + 0x60], 0xb510b3d0
mov dword [esp + 0x64], 0xb921b725
mov dword [esp + 0x68], 0xbd1ebb16
mov dword [esp + 0x6c], 0xa12cbf1f
mov dword [esp + 0x70], 0xa5fda33b
mov word [esp + 0x74], 0xa7a4
mov dword [esp + 0x76], 0
mov ebp, 0x9703253d
mov ebx, 0x68fcdac2
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + ebp + 0x68fcdadf]
mov eax, ebx
and eax, 0xe2
mov edx, ebp
and edx, 0x1d
or edx, eax
xor edx, ecx
mov esi, ecx
xor edx, 0x1d
and edx, ebp
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, ebp
add al, 0xcf
mov byte [esp + ebp + 0x68fcdadf], al
inc ebp
dec ebx
cmp ebp, 0x9703259b
jne 0x40e150
movzx eax, word [esp + 0x1c]
test ax, ax
lea ebp, [esp + 0x7c]
je 0x40e1d2
lea ecx, [esp + 0x1e]
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e1c0
mov word [ebp], 0
mov ebx, dword [esp + 0x18]
and ebx, 7
mov eax, dword [esp + 0x14]
sub eax, ebx
lea edx, [eax*2 + 0x20]
xor eax, eax
xor ecx, ecx
mov edi, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx esi, byte [edi + ecx + 0x60]
mov word [ebp + eax], si
movsx esi, byte [edi + ecx + 0x61]
mov word [ebp + eax + 2], si
movsx esi, byte [edi + ecx + 0x62]
mov word [ebp + eax + 4], si
movsx esi, byte [edi + ecx + 0x63]
mov word [ebp + eax + 6], si
movsx esi, byte [edi + ecx + 0x64]
mov word [ebp + eax + 8], si
movsx esi, byte [edi + ecx + 0x65]
mov word [ebp + eax + 0xa], si
movsx esi, byte [edi + ecx + 0x66]
mov word [ebp + eax + 0xc], si
movsx esi, byte [edi + ecx + 0x67]
mov word [ebp + eax + 0xe], si
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40e200
test ebx, ebx
je 0x40e27f
neg eax
movsx edx, byte [edi + ecx + 0x60]
mov word [ebp + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebx
jne 0x40e260
sub ebp, eax
lea ecx, [ebp - 2]
jmp 0x40e287
mov bl, 1
jmp 0x40e325
lea ecx, [eax + ebp]
add ecx, 0xfffffffe
add ebp, eax
mov word [ebp], 0xd
mov dword [ecx + 4], 0xa
mov eax, dword [edi + 0x80]
mov dword [esp + 0x1c], 0x19b51b6d
mov dword [esp + 0x20], 0x65d167a8
mov word [esp + 0x24], 0x6364
mov dword [esp + 0x26], 0
mov word [esp + 0x2a], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x3b
xor dl, byte [esp + ecx + 0x1c]
add dl, 0xd9
mov byte [esp + ecx + 0x1c], dl
inc ecx
cmp ecx, 0x10
jne 0x40e2d0
lea ecx, [esp + 0x7c]
push 0x493e0
push eax
mov esi, dword [esp + 8]
push esi
push 0
push 0
push ecx
lea eax, [esp + 0x34]
push eax
call fcn.004104f0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040ca00
add esp, 4
mov eax, dword [edi + 0x80]
add dword [edi + 4], eax
mov dword [edi + 0x80], 0
mov eax, ebx
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret