Function at 0x40a5cd
Capabilities:
Encode data using xor

Disassembly:
and al, 0x58
add esp, dword ss:[edx + 0x39]
mov dword [esp + 0x5c], 0x6a2bcf33
mov dword [esp + 0x60], 0x3ad63c20
mov dword [esp + 0x64], 0x3624791f
mov dword [esp + 0x68], 0x6d172821
mov dword [esp + 0x6c], 0x121a282a
mov dword [esp + 0x70], 0x114a2a52
mov dword [esp + 0x74], 0x151b1d11
mov dword [esp + 0x78], 0x261f1005
inc esp
and al, 0x78
add eax, 0x66261f10
mov dword [esp + 0x7c], 0x44c7615e
and al, 0x7e
add byte [eax], al
add byte [eax], al
mov byte [esp + 0x82], 0
xor ebx, ebx
mov ecx, dword [esp + 0x98]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x36
xor al, byte [esp + ebx + 0x44]
add al, 0xf2
mov byte [esp + ebx + 0x44], al
inc ebx
cmp ebx, 0x3f
jne 0x40a41d
add ecx, edx
mov word [esp + 4], 0x28d7
mov byte [esp + 6], 0xfa
mov word [esp + 7], 0
mov byte [esp + 9], 0
mov edx, 0x492622ff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx - 0x492622fb]
xor ebx, edx
mov eax, ebx
and eax, 1
or ebx, 1
add ebx, eax
add bl, 4
mov byte [esp + edx - 0x492622fb], bl
inc edx
cmp edx, 0x49262305
jne 0x40a45d
movzx ebx, byte [esp + 4]
mov edx, ecx
test bl, bl
je 0x40a4a8
lea edi, [esp + 5]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
inc edi
test bl, bl
jne 0x40a49d
mov byte [edx], 0
mov eax, dword [esp]
movzx ebx, byte [eax + 0x60]
test bl, bl
je 0x40a4c8
lea edi, [eax + 0x61]
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [edi]
mov byte [edx], 0
add al, ah
dec esi
mov bh, 0xb6
pop esp
and al, 0x44
test bl, bl
je 0x40a4eb
lea edi, [esp + 0x45]
nop
nop
nop
nop
nop
mov byte [edx], bl
invalid
inc edx
add al, ah
dec esi
mov bh, 0xb6
pop ds
inc edi
test bl, bl
jne 0x40a4e3
invalid
mov byte [edx], 0
movzx ebx, byte [esi]
test bl, bl
mov dword [esp + 0x40], ecx
je 0x40a50e
inc esi
nop
nop
nop
nop
nop
nop
mov byte [edx], bl
inc edx
movzx ebx, byte [esi]
inc esi
test bl, bl
jne 0x40a503
mov byte [edx], 0
movzx ecx, byte [esp + 0xc]
test cl, cl
je 0x40a540
lea edi, [esp + 0xd]
mov esi, dword [esp + 0xa4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40a533
jmp 0x40a547
mov esi, dword [esp + 0xa4]
mov byte [edx], 0
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x40a56e
lea edi, [esp + 0x15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [edi]
inc edi
test cl, cl
jne 0x40a563
mov byte [edx], 0
mov ecx, esi
shr ecx, 2
mov ebx, dword [esp + 0xa0]
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebp, esi
cmp byte [eax], 0x13
lodsd eax, dword [esi]
in eax, 0xfc
add edx, ebp
add ebp, ebx
mov ebx, esi
cmp byte [eax], 0x13
lodsd eax, dword [esi]
jecxz 0x40a59c
mov ecx, ebx
shr ecx, 1
mov eax, ebp
mov edi, edx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
and esi, 2
add edx, esi
mov eax, ebx
xor eax, 0xfffffffe
or ebx, 1
and ebx, eax
je 0x40a5e3
jmp 0xd7ca8e2a
movzx eax, byte [ebp + esi]
mov byte [edx], al
cmp ebx, 1
jne 0x40a5c6
inc edx
jmp 0x40a5e3
movzx eax, byte [ebp + esi + 1]
mov byte [edx + 1], al
or dword [esi], 4
jmp 0x40a64e
invalid
add edx, 3
mov dword [esp + 0x44], 0x4f494d4f
mov byte [esp + 0x48], 0x38
mov dword [esp + 0x49], 0
mov byte [esp + 0x4d], 0
mov ecx, 0x8b
mov esi, 0x74
nop
nop
add al, ah
dec esi
mov bh, 0xb6
pop esp
or al, 0xb9
mov eax, esi
or eax, ebx
not ebx
or ebx, ecx
and ebx, eax
mov al, 0x48
sub al, bl
mov byte [esp + ecx - 0x47], al
inc ecx
dec esi
or dword [esi], 0x9579eb04
add byte [eax], al
add byte [ebp - 0x21], dh
mov dword [esp + 0x14], 0xe0b09b9d
dec esi
mov bh, 0x83
cmp dword [edx], 0x2444c6de
sbb ah, ah
mov dword [esp + 0x19], 0
mov dword [esp + 0x1c], 0
xor ecx, ecx
movzx eax, byte [esp + ecx + 0x14]
lea esi, [ecx + 0x634e8558]
mov ebx, 0xa7
sub ebx, ecx
xor ebx, esi
and ebx, eax
xor ebx, esi
invalid
invalid
add byte [eax], al