Function at 0x40a3c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
movsd xmm0, qword [str.A_PhFFBD]
movsd qword [esp + 0x28], xmm0
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0xae
mov dword [esp + 0x35], 0
mov dword [esp + 0x31], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x17
ja 0x40a466
nop word [eax + eax]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx esi, byte [esp + ecx + 0x28]
lea ecx, [eax - 0x4101dc9b]
mov edi, ecx
and edi, esi
xor ecx, esi
lea ecx, [ecx + edi*2]
add eax, 0x65
and eax, esi
add eax, edi
mov esi, ecx
not esi
and esi, eax
not eax
and eax, ecx
sub eax, esi
add al, 0x3d
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x18
jb 0x40a420
lea eax, [esp + 0x9b]
lea esi, [esp + 0x28]
mov ebx, esi
mov ecx, 2
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0xa3]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0xa3], cl
movaps xmm0, xmmword [str.a_rc_ne]
movups xmmword [esp + 0x28], xmm0
movaps xmm0, xmmword [0x43a7f0]
movups xmmword [esp + 0x38], xmm0
movaps xmm0, xmmword [0x43a800]
movups xmmword [esp + 0x48], xmm0
movaps xmm0, xmmword [0x43a810]
movups xmmword [esp + 0x58], xmm0
movaps xmm0, xmmword [0x43a820]
movups xmmword [esp + 0x68], xmm0
movaps xmm0, xmmword [0x43a830]
movups xmmword [esp + 0x78], xmm0
mov dword [esp + 0x88], 0xc3c2c1ca
mov dword [esp + 0x90], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x93], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x6e
ja 0x40a55f
nop word cs:[eax + eax]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
mov edi, ecx
xor edi, 0x70
and ecx, 0x70
lea ecx, [edi + ecx*2]
xor cl, byte [esp + edx + 0x28]
add cl, 0xf0
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0x6f
jb 0x40a530
mov ecx, dword [ebp + 8]
movsd xmm0, qword [0x43a840]
movsd qword [esp + 8], xmm0
mov word [esp + 0x10], 0xc9c8
mov dword [esp + 0x16], 0
mov dword [esp + 0x12], 0
mov word [esp + 0x1a], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0x13
ja 0x40a5c7
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
add dl, 0x78
xor dl, byte [esp + edi + 8]
add dl, 0xb8
mov edi, dword [esp + 4]
mov byte [esp + edi + 8], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0x14
jb 0x40a5a0
lea edx, [esp + 0x24]
lea edi, [esp + 8]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040a9d0
add esp, 0x1c
test al, al
je 0x40a84e
mov word [esp + 0x28], 0x7077
mov byte [esp + 0x2a], 4
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 7
ja 0x40a662
nop word cs:[eax + eax]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x177bd701
add eax, 0x177bd701
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0xf9
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 8
jb 0x40a620
xor ecx, ecx
mov eax, dword [esp + 0x24]
nop dword [eax + eax]
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 0x28]
test dl, dl
je 0x40a681
inc ecx
cmp dl, dh
je 0x40a670
mov bl, 1
cmp dl, dh
je 0x40a977
movsd xmm0, qword [0x43a850]
movsd qword [esp + 0x28], xmm0
mov word [esp + 0x30], 0
mov byte [esp + 0x32], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0xa
ja 0x40a70d
nop word cs:[eax + eax]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x9edc7ead
add eax, 0xad
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov ecx, eax
xor ecx, 0x44
and eax, 0x44
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0xb
jb 0x40a6c0
mov eax, dword [esp + 0x24]
movzx edx, byte [esp + 0x28]
mov ecx, eax
test dl, dl
je 0x40a751
mov edi, esi
mov ebx, eax
mov ecx, eax
nop word cs:[eax + eax]
mov dh, byte [ebx]
test dh, dh
je 0x40a855
inc ebx
inc edi
cmp dh, dl
lea edx, [ecx + 1]
cmovne ecx, edx
cmovne ebx, edx
cmovne edi, esi
movzx edx, byte [edi]
test dl, dl
jne 0x40a730
test ecx, ecx
je 0x40a855
movaps xmm0, xmmword [str.tjwh]
movups xmmword [esp + 0x28], xmm0
mov dword [esp + 0x38], 0xd3ba967d
lea edx, [esp + 0x3c]
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x43], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1e
ja 0x40a7de
nop word [eax + eax]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x28]
lea esi, [eax + 0x170b8e61]
lea edi, [eax + 0x61]
or esi, edi
and esi, ecx
and edi, ecx
add edi, esi
add eax, ecx
add eax, 0x170b8e61
sub eax, edi
add al, 0x59
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1f
jb 0x40a7a0
lea esi, [esp + 0x28]
lea eax, [esp + 8]
mov edi, eax
mov ecx, 5
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x1c]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ecx, dword [esp + 0x24]
movzx ebx, byte [esp + 8]
test bl, bl
je 0x40a85c
mov edx, eax
mov esi, ecx
nop word cs:[eax + eax]
mov bh, byte [ecx]
test bh, bh
je 0x40a95c
inc ecx
inc edx
cmp bh, bl
lea edi, [esi + 1]
cmovne esi, edi
cmovne ecx, edi
lea eax, [esp + 8]
cmovne edx, eax
movzx ebx, byte [edx]
test bl, bl
jne 0x40a820
test esi, esi
jne 0x40a866
jmp 0x40a95c
xor ebx, ebx
jmp 0x40a980
xor ebx, ebx
jmp 0x40a977
mov esi, ecx
test esi, esi
je 0x40a95c
mov word [esp + 0x28], 0x3f42
mov byte [esp + 0x2a], 0x62
mov dword [esp + 0x2f], 0
mov dword [esp + 0x2b], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xa
ja 0x40a8da
nop word cs:[eax + eax]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edi, byte [esp + ecx + 0x28]
lea ecx, [edx + edi]
add ecx, 0xf0
add edx, 0xf0
and edx, edi
add edx, edx
sub ecx, edx
add cl, 0x70
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xb
jb 0x40a8a0
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40a960
add esi, 0x13
lea edx, [esp + 0x28]
mov ebx, esi
mov edi, esi
nop
mov ch, byte [ebx]
test ch, ch
je 0x40a95c
inc ebx
inc edx
cmp ch, cl
lea ecx, [edi + 1]
cmovne edi, ecx
cmovne ebx, ecx
lea eax, [esp + 0x28]
cmovne edx, eax
movzx ecx, byte [edx]
test cl, cl
jne 0x40a8f0
test edi, edi
je 0x40a95c
mov byte [0x44618c], 1
mov dword [esp + 0x28], 0
mov ebx, 0x44618e
cmp edi, esi
jbe 0x40a96c
cmp byte [esi], 0
je 0x40a96c
lea eax, [esp + 0x28]
push eax
push edi
push esi
call fcn.0040efc0
add esp, 0xc
movzx ecx, word [esp + 0x28]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x44638c
jae 0x40a96c
add esi, eax
cmp esi, edi
jb 0x40a92d
jmp 0x40a96c
xor ebx, ebx
jmp 0x40a973
mov byte [0x44618c], 1
mov ebx, 0x44618e
mov word [ebx], 0
mov bl, 1
mov eax, dword [esp + 0x24]
push eax
call fcn.00432e70
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret