Function at 0x40d490
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x6c
mov dword [esp + 0x18], ecx
mov eax, dword [ecx + 0x60]
mov dword [esp + 0x14], eax
mov word [esp], 0x9d93
mov byte [esp + 2], 0xe6
mov dword [esp + 3], 0
mov edi, 0xa78346d9
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi + 0x587cb927]
mov ecx, edi
and ecx, esi
mov dword [esp + 0x20], ecx
mov eax, ecx
and eax, 0xfffffffd
mov dword [esp + 8], eax
mov eax, ecx
and eax, 2
mov ebp, ecx
or ebp, 0xfffffffd
mov edx, ecx
or edx, 2
mov dword [esp + 0x24], edx
imul eax, edx
lea ebx, [ebp + 1]
imul ebx, dword [esp + 8]
add ebx, esi
mov ecx, ebx
sub ecx, eax
add ebx, edi
sub ebx, eax
add ecx, edi
mov edx, ebx
and dl, 0xc0
lea eax, [ecx + ecx]
mov dword [esp + 0x1c], eax
not cl
and cl, 2
mov eax, edx
mul cl
mov ecx, eax
mov eax, esi
add cl, al
or dl, 2
shr bl, 1
and bl, 1
mov eax, edx
mul bl
mov ch, al
mov eax, ebp
inc al
mul byte [esp + 8]
mov ebx, eax
mov eax, dword [esp + 0x20]
shr al, 1
and al, 1
mul byte [esp + 0x24]
add ch, ch
add ch, cl
add bl, ch
add al, al
sub bl, al
mov eax, dword [esp + 0x1c]
and al, 0x84
sub bl, al
movzx eax, bl
add eax, edi
add al, 0xc3
mov byte [esp + edi + 0x587cb927], al
inc edi
cmp edi, 0xa78346e0
jne 0x40d4c0
mov dword [esp + 0xc], 0x36cc3026
mov dword [esp + 0x10], 0xc3ca
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x31
xor cl, byte [esp + eax + 0xc]
add cl, 0xb
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 8
jne 0x40d590
mov dword [esp + 0x28], 0x9294686f
mov dword [esp + 0x2c], 0x8e8a7c60
mov dword [esp + 0x30], 0x8db2b47f
mov dword [esp + 0x34], 0x86b982b1
mov dword [esp + 0x38], 0x7681b5b2
mov dword [esp + 0x3c], 0x845b615b
mov dword [esp + 0x40], 0x83b98f86
mov dword [esp + 0x44], 0x8a524c8c
mov dword [esp + 0x48], 0x848b8b81
mov dword [esp + 0x4c], 0x94919b8f
mov dword [esp + 0x50], 0xab624596
mov dword [esp + 0x54], 0x5e9d9191
mov dword [esp + 0x58], 0xa696a4a0
mov dword [esp + 0x5c], 0xdae4174d
mov dword [esp + 0x60], 0x1f31d8e7
mov byte [esp + 0x64], 0x70
mov dword [esp + 0x65], 0
mov eax, 0xa45e48a
mov ecx, 0x35ba1b74
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0xa45e462]
lea edx, [eax - 0x1fffffff]
mov ebx, edi
not ebx
or ebx, 0xa97e58db
add ebx, edi
inc ebx
and edi, 0x24
xor edi, 0x5681a724
or ebx, edi
mov edi, ecx
and edi, 0x14800724
and edx, 0xa84440db
or edx, edi
xor edx, ebx
add edx, 0xb88031d
mov edi, edx
and edi, 0x48
xor edx, 0x48
lea edx, [edx + edi*2]
add dl, 0xe4
mov byte [esp + eax - 0xa45e462], dl
inc eax
dec ecx
cmp eax, 0xa45e4cb
jne 0x40d640
mov edi, dword [esp + 0x80]
add edi, dword [esp + 0x14]
movzx ecx, byte [esp + 0x28]
mov eax, edi
test cl, cl
je 0x40d6cb
lea edx, [esp + 0x29]
mov eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d6c0
mov byte [eax], 0
mov edx, dword [esp + 0x84]
movzx ecx, byte [edx]
test cl, cl
je 0x40d6eb
inc edx
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d6e0
mov byte [eax], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40d70b
lea edx, [esp + 0xd]
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d700
mov byte [eax], 0
mov edx, dword [esp + 0x88]
movzx ecx, byte [edx]
test cl, cl
je 0x40d72b
inc edx
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d720
mov byte [eax], 0
movzx ecx, byte [esp]
test cl, cl
je 0x40d74b
lea edx, [esp + 1]
nop
nop
nop
nop
nop
nop
mov byte [eax], cl
inc eax
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x40d740
mov byte [eax], 0
sub eax, edi
mov ecx, dword [esp + 0x18]
add dword [ecx + 0x60], eax
add esp, 0x6c
pop esi
pop edi
pop ebx
pop ebp
ret 0xc