Function at 0x40e090
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
cmp dword [ecx + 0x20], 0
je 0x40e5d7
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.0040abf0
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 4], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x7c], 0xb4343938
mov word [esp + 0x80], 0
mov eax, 0xdd28ea76
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x22d71606]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xb2
mov byte [esp + eax + 0x22d71606], cl
inc eax
cmp eax, 0xdd28ea7c
jne 0x40e0e0
mov eax, dword [esp + 0x7c]
push dword [eax + 0x14]
call fcn.0040d520
add esp, 4
call fcn.0040d530
mov dword [esp + 0x18], eax
mov ebx, eax
and ebx, 0xf
mov edi, 0xfffffff0
mov ebp, 0x38e38e39
nop
nop
call fcn.0040d530
mov ecx, eax
imul ebp
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 ebx, edi
jne 0x40e130
mov dword [esp + 0x14], ebx
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 + 2], al
mov byte [esp + 3], 0
mov eax, dword [esp + 4]
add eax, 0x400
push eax
call fcn.0040cdc0
add esp, 4
mov ebx, eax
mov dword [esp + 0x7c], 0x7d65527c
mov byte [esp + 0x80], 0xd8
mov dword [esp + 0x81], 0
mov word [esp + 0x85], 0
mov eax, 0xd63bcf2f
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x29c4314d]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x15
mov byte [esp + eax + 0x29c4314d], cl
inc eax
cmp eax, 0xd63bcf3a
jne 0x40e1d0
lea edi, [esp + 0x7c]
mov ecx, esi
push 0x44af3c
push edi
push ebx
call fcn.0040d900
mov dword [esp + 0x7c], 0x690e0414
mov dword [esp + 0x80], 0
mov eax, 0xcfbf0e67
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x3040f215]
xor ecx, eax
add ecx, 0xf144b7fc
mov edx, ecx
xor edx, 0x67
and ecx, 0x18
add ecx, ecx
sub ecx, edx
add cl, 0x68
mov byte [esp + eax + 0x3040f215], cl
inc eax
cmp eax, 0xcfbf0e6f
jne 0x40e230
lea eax, [esp + 2]
mov dword [esp + 8], esi
mov ecx, esi
push eax
push edi
mov dword [esp + 0x14], ebx
push ebx
call fcn.0040d900
mov esi, dword [str.tLYMe5__1]
mov dword [esp + 0x7c], 0xb95e2418
mov byte [esp + 0x80], 0
mov eax, 0xf7fa085f
mov edx, 0x5f7a0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x805f81d]
mov ebp, edx
and ebp, 0x44287
mov ecx, eax
and ecx, 0x92000038
or ecx, ebp
xor ecx, ebx
lea ebx, [ecx + ecx]
and ebx, 0x48
xor ecx, 0x1c
xor ebx, 8
sub ebx, ecx
mov byte [esp + eax + 0x805f81d], bl
inc eax
dec edx
cmp eax, 0xf7fa0864
jne 0x40e2a0
mov ecx, dword [esp + 8]
push esi
push edi
mov ebp, dword [esp + 0x14]
push ebp
call fcn.0040d900
mov dword [esp + 0x7c], 0x7f847c83
mov dword [esp + 0x80], 0x8c73887b
mov dword [esp + 0x84], 0x7675788b
mov byte [esp + 0x88], 4
mov dword [esp + 0x89], 0
mov dword [esp + 0x8c], 0
mov edx, 0x84
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 8]
mov ebx, eax
mov esi, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xbd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x6c
mov byte [esp + edx - 8], al
inc edx
cmp edx, 0x98
jne 0x40e330
mov dword [esp + 0x1c], 0xe16a7a47
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x79
xor cl, byte [esp + eax + 0x1c]
xor cl, 0x20
add cl, 0x43
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 4
jne 0x40e380
lea eax, [esp + 0x1c]
mov esi, dword [esp + 8]
mov ecx, esi
push edi
push eax
push ebp
call fcn.0040d900
mov dword [esp + 0x7c], 0x7a626062
mov byte [esp + 0x80], 0xd4
mov dword [esp + 0x81], 0
mov word [esp + 0x85], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x7c]
lea ecx, [eax - 0x3da406d2]
xor ecx, edx
mov edx, ecx
not edx
and edx, 0xe7
and ecx, 0x18
sub ecx, edx
inc cl
mov byte [esp + eax + 0x7c], cl
lea ecx, [eax + eax]
and ecx, 2
mov edx, ecx
and edx, eax
or ecx, eax
xor ecx, 1
add ecx, edx
mov eax, ecx
cmp ecx, 0xb
jb 0x40e3e0
mov ecx, esi
push dword [esp + 4]
push dword [esp + 0x14]
push edi
push ebp
call fcn.0040dbf0
mov dword [esp + 0x1c], 0x7fed793f
mov dword [esp + 0x20], 0x63f67dee
mov dword [esp + 0x24], 0x67f46105
mov dword [esp + 0x28], 0x6b4765f0
mov dword [esp + 0x2c], 0x6ff7691c
mov dword [esp + 0x30], 0x93f76dfc
mov dword [esp + 0x34], 0x97b691ce
mov dword [esp + 0x38], 0x9b0f95f9
mov dword [esp + 0x3c], 0x9f0a99f4
mov dword [esp + 0x40], 0x83129df5
mov dword [esp + 0x44], 0x871081e1
mov dword [esp + 0x48], 0x8bd98510
mov dword [esp + 0x4c], 0x8f1d89e2
mov dword [esp + 0x50], 0xb3df8d1a
mov dword [esp + 0x54], 0xb7d2b19d
mov dword [esp + 0x58], 0xbb2eb5d5
mov dword [esp + 0x5c], 0xbfe1b9d9
mov dword [esp + 0x60], 0xa3c4bd9c
mov dword [esp + 0x64], 0xa733a133
mov dword [esp + 0x68], 0xabcea536
mov dword [esp + 0x6c], 0xaf38a9c9
mov dword [esp + 0x70], 0xd38fad35
mov word [esp + 0x74], 0xd1d0
mov dword [esp + 0x76], 0
xor eax, eax
nop
nop
nop
nop
mov edx, eax
and edx, 0x6a
mov ebx, eax
and ebx, 0x15
mov ecx, eax
xor ecx, 0xea
add ecx, edx
sub ecx, ebx
add ecx, eax
xor cl, byte [esp + eax + 0x1c]
add cl, 0x6e
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 0x5e
jne 0x40e4f0
movzx eax, word [esp + 0x1c]
test ax, ax
mov ebp, dword [esp + 0x18]
je 0x40e541
lea edi, [esp + 0x7c]
lea ecx, [esp + 0x1e]
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e530
mov word [edi], 0
and ebp, 7
mov eax, dword [esp + 0x14]
sub eax, ebp
lea edx, [eax*2 + 0x20]
xor eax, eax
xor ecx, ecx
mov ebx, dword [esp + 8]
nop
nop
movsx esi, byte [ebx + ecx + 0x60]
mov word [edi + eax], si
movsx esi, byte [ebx + ecx + 0x61]
mov word [edi + eax + 2], si
movsx esi, byte [ebx + ecx + 0x62]
mov word [edi + eax + 4], si
movsx esi, byte [ebx + ecx + 0x63]
mov word [edi + eax + 6], si
movsx esi, byte [ebx + ecx + 0x64]
mov word [edi + eax + 8], si
movsx esi, byte [ebx + ecx + 0x65]
mov word [edi + eax + 0xa], si
movsx esi, byte [ebx + ecx + 0x66]
mov word [edi + eax + 0xc], si
movsx esi, byte [ebx + ecx + 0x67]
mov word [edi + eax + 0xe], si
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40e560
test ebp, ebp
je 0x40e5de
neg eax
nop
movsx edx, byte [ebx + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebp
jne 0x40e5c0
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40e5e6
mov bl, 1
jmp 0x40e6a6
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov eax, dword [ebx + 0x80]
mov dword [esp + 4], eax
mov dword [esp + 0x1c], 0xf757f98b
mov dword [esp + 0x20], 0xf34bf544
mov dword [esp + 0x24], 0xf1f0
mov esi, 0x756d0456
mov edx, 0x1525f7a9
nop
nop
movzx edi, byte [esp + esi - 0x756d043a]
mov ebx, edx
or ebx, edi
lea eax, [edx - 0x1525f780]
mov ebp, eax
and ebp, 0x3d
mov ecx, esi
and ecx, 2
or ecx, ebp
xor ecx, 0x82
or ecx, eax
and ecx, edi
not ebx
or ebx, ecx
add bl, 0x52
mov byte [esp + esi - 0x756d043a], bl
inc esi
dec edx
cmp esi, 0x756d0462
jne 0x40e620
lea eax, [esp + 0x7c]
push 0x493e0
push dword [esp + 8]
mov esi, dword [esp + 0x14]
push esi
push 0
push 0
push eax
lea eax, [esp + 0x34]
push eax
call fcn.00410c00
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040cdd0
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
mov eax, ebx
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret