Function at 0x41a960
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
mov dword [esp + 8], 0xa37ead00
mov dword [esp + 0xc], 0xa701a113
mov dword [esp + 0x10], 0xbb06a505
mov dword [esp + 0x14], 0xbf7bb958
mov dword [esp + 0x18], 0xb306bd34
mov dword [esp + 0x1c], 0xb704b115
mov dword [esp + 0x20], 0x8b33b503
mov dword [esp + 0x24], 0x8f3c893b
mov dword [esp + 0x28], 0x83558d6c
mov dword [esp + 0x2c], 0x87328125
mov dword [esp + 0x30], 0x9b238530
mov dword [esp + 0x34], 0x9f25992a
mov dword [esp + 0x38], 0x933e9d2b
lea eax, [esp + 0x3c]
mov word [esp + 0x3c], 0x9190
mov dword [esp + 0x3e], 0
mov dword [esp + 0x42], 0
mov word [esp + 0x46], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
movzx esi, byte [esp + edx + 8]
mov ebx, edx
xor ebx, 0xabd7590a
mov edi, ecx
and edi, 0x6a
sub edi, ebx
mov ebx, 0x5b2ff2f
sub ebx, edi
add edi, 0x7a4d00d0
and ebx, 0x20001f9f
and edi, 0x88258060
or edi, ebx
xor edi, esi
xor edi, 0x66503f9f
mov dword [esp + 0x6c], edi
mov edi, dword [esp + 0x6c]
lea esi, [edi + 0x7c451746]
mov ebx, 0xb9
sub ebx, edi
mov edi, esi
and ebx, 0xf2
and esi, 0xd
or esi, ebx
and edi, 0x15
xor esi, 0x67
lea ebx, [esi + edi*2]
add bl, 0xbb
mov byte [esp + edx + 8], bl
inc edx
add ecx, 2
cmp edx, 0x40
jne 0x41aa00
lea edi, [esp + 0x6c]
lea ebx, [esp + 8]
mov edx, ebx
mov ecx, 0xd
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xa0]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41aab0
mov ecx, eax
sar ecx, 1
xor ecx, 0x1b
mov edx, dword [ebp + 0x10]
mov edi, dword [edx + 4]
mov edx, 0xfffffffe
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x41aad0
and eax, 0x36
add ecx, eax
sar edx, 1
mov eax, edx
and eax, ecx
xor edx, ecx
lea eax, [edx + eax*2]
test eax, eax
jns 0x41aaf6
mov eax, 0xffffffff
jmp 0x41aaf8
add eax, eax
push eax
call fcn.00409230
add esp, 4
movzx ecx, word [esi]
mov dword [esp + 4], eax
test cx, cx
je 0x41ab31
add esi, 2
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x41ab20
mov word [eax], 0
movzx ecx, word [esp + 0x6c]
test cx, cx
je 0x41ab61
lea edx, [esp + 0x6e]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41ab50
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x41ab91
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41ab80
mov word [eax], 0
mov dword [esp + 8], 0x33ef3507
mov dword [esp + 0xc], 0xcfbc31ba
mov dword [esp + 0x10], 0xcb3ecd35
mov dword [esp + 0x14], 0xc73fc947
mov dword [esp + 0x18], 0xc336c537
mov dword [esp + 0x1c], 0xdff1c14f
lea eax, [esp + 0x20]
mov word [esp + 0x20], 0xddde
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 0x2a], 0
mov byte [esp + 0x2e], 0
mov ecx, 0x588a5606
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ebx]
mov esi, edx
not esi
lea edi, [ecx - 0x588a5600]
or edi, esi
mov esi, ecx
or esi, edx
add edi, edx
mov edx, 0xfffffffe
sub edx, edi
and edx, esi
not edx
mov dword [esp + 0x50], edx
mov esi, dword [esp + 0x50]
mov edx, esi
mov edi, esi
xor edi, 0x30
sub edi, esi
and esi, 0xcf
and edx, 0x6bc85a30
add edi, edx
or edi, esi
lea edx, [edi + edx*2]
inc dl
mov byte [ebx], dl
inc ebx
dec ecx
cmp ecx, 0x588a55df
jne 0x41ac00
lea edi, [esp + 0x50]
lea edx, [esp + 8]
mov ecx, 6
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x68]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [ebp + 0xc]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41ac80
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41aca0
mov edx, dword [ebp + 0x10]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x41acc0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xe
test eax, eax
jns 0x41ace4
mov eax, 0xffffffff
jmp 0x41aced
add ecx, edx
lea eax, [ecx*2 + 0x1c]
push eax
call fcn.00409230
add esp, 4
movzx ecx, word [edi]
mov dword [esp], eax
test cx, cx
je 0x41ad21
add edi, 2
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41ad10
mov word [eax], 0x2f
add eax, 2
movzx ecx, word [esi]
test cx, cx
je 0x41ad51
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x41ad40
mov word [eax], 0
movzx ecx, word [esp + 0x50]
test cx, cx
je 0x41ad81
lea edx, [esp + 0x52]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41ad70
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x41adb1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41ada0
mov word [eax], 0
mov dword [esp + 8], 0x3b38391c
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov eax, 0x10d9df77
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x10d9df6f]
mov ecx, eax
and ecx, edx
mov edi, ecx
xor edi, 2
mov esi, ecx
or esi, 0xfffffffd
and edi, esi
inc esi
imul esi, edi
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
add esi, edx
sub esi, ecx
add esi, eax
mov dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x4c]
add cl, 0xbf
mov byte [esp + eax - 0x10d9df6f], cl
inc eax
cmp eax, 0x10d9df83
jne 0x41ade0
push 0
push 0
push 0
push 0xc00000
lea eax, [esp + 0x18]
push eax
mov esi, dword [esp + 0x18]
push esi
mov edi, dword [esp + 0x18]
push edi
push dword [ebp + 8]
call fcn.0041de50
add esp, 0x20
mov ebx, eax
jmp dword [0x44a608]