Function at 0x41b580
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov esi, esp
push eax
sub esp, 0x4c
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0xc], eax
mov esp, eax
mov dword [esi + 0x20], 0x43d54de0
mov dword [esi + 0x24], 0x47d541d4
mov dword [esi + 0x28], 0xbb1b45d2
mov dword [esi + 0x2c], 0xbf1bb923
mov dword [esi + 0x30], 0xb316bd10
mov dword [esi + 0x34], 0xb72cb115
mov dword [esi + 0x38], 0xab3fb515
mov dword [esi + 0x3c], 0xaf3aa934
lea eax, [esi + 0x40]
mov word [esi + 0x40], 0xadac
mov dword [esi + 0x42], 0
mov dword [esi + 0x46], 0
mov dword [esi + 0x4a], 0
mov word [esi + 0x4e], 0
xor ecx, ecx
nop
nop
nop
movzx edx, byte [esi + ecx + 0x20]
lea edi, [ecx + 0xcfe7ef6]
mov ebx, edi
or ebx, 0x2c1afeb8
xor edi, 0xd3e50147
and edi, ebx
mov ebx, 0xf3018109
sub ebx, ecx
and ebx, 0xd3010147
add edi, ebx
mov ebx, edx
xor ebx, 0x2c1afeb8
or ebx, edi
xor edx, 0xd3e50147
add ebx, edx
inc ebx
or edx, edi
not ebx
and ebx, edx
mov dword [esi + 0x54], ebx
mov edi, dword [esi + 0x54]
neg edi
mov edx, edi
xor edx, 0x89
and edi, 0x76
add edi, edi
sub edx, edi
add dl, 0xbd
mov byte [esi + ecx + 0x20], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x30
jb 0x41b600
lea edi, [esi + 0x54]
lea edx, [esi + 0x20]
mov ecx, 8
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esi + 0x74]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov eax, dword [ebp + 0x10]
mov edi, dword [eax + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41b6a0
mov eax, ecx
sar eax, 1
and ecx, 0x22
xor eax, 0x11
add eax, ecx
jns 0x41b6c0
mov eax, 0xffffffff
jmp 0x41b6c2
add eax, eax
mov ebx, dword [esi + 0xc]
push eax
call fcn.00408a60
add esp, 4
movzx ecx, word [edi]
mov dword [esi + 4], eax
test cx, cx
je 0x41b6f1
add edi, 2
mov eax, dword [esi + 4]
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x41b6e0
mov word [eax], 0
movzx ecx, word [esi + 0x54]
test cx, cx
je 0x41b723
lea edx, [esi + 0x56]
mov edi, dword [esi + 4]
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 0x41b710
jmp 0x41b726
mov edi, dword [esi + 4]
mov word [eax], 0
mov eax, dword [ebp + 8]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], edi
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x28], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x30], eax
mov dword [ebx], 0x33ad31ad
mov dword [ebx + 4], 0x376b35be
mov dword [ebx + 8], 0x2ba2294d
mov dword [ebx + 0xc], 0x2f4b2db8
mov dword [ebx + 0x10], 0x23b121be
mov dword [ebx + 0x14], 0x27b925bd
mov dword [ebx + 0x18], 0x5b0159c6
mov dword [ebx + 0x1c], 0x5f055d07
mov dword [ebx + 0x20], 0x533c510a
mov dword [ebx + 0x24], 0x57c555c1
mov dword [ebx + 0x28], 0x4bd8492d
mov dword [ebx + 0x2c], 0x4fd14d0f
mov dword [ebx + 0x30], 0x43d641de
mov dword [ebx + 0x34], 0x47ce4521
mov dword [ebx + 0x38], 0x7b0379ec
mov dword [ebx + 0x3c], 0x7f337d18
mov dword [ebx + 0x40], 0x7372712a
mov dword [ebx + 0x4c], 0
mov dword [ebx + 0x48], 0
mov dword [ebx + 0x44], 0
xor ecx, ecx
mov eax, 0xa7
mov edx, 0x5ac5a157
nop
nop
nop
mov dword [esi + 0x14], edx
mov dword [esi + 8], eax
mov dword [esi + 0x18], ecx
movzx eax, byte [ebx + eax - 0xa7]
mov edi, eax
not edi
mov dword [esi + 0x10], edi
lea edi, [eax + edi*2]
mov ebx, 0xfffffffe
sub ebx, edi
mov edi, eax
mov eax, dword [esi + 0x10]
lea eax, [edi + eax*2]
inc eax
and eax, edx
xor ebx, edx
sub ebx, eax
mov eax, edx
or eax, edi
add ebx, edx
and ebx, eax
mov eax, ecx
shr eax, 1
and eax, 1
mov ecx, dword [esi + 8]
add ecx, 0xa53a5e01
mov edx, ecx
or ecx, 2
imul ecx, eax
mov eax, dword [esi + 0x14]
shr eax, 1
and eax, 1
and edx, 0x7d
imul edx, eax
add ecx, ecx
lea eax, [ecx + edx*2]
mov ecx, dword [esi + 8]
sub ecx, eax
or ecx, dword [esi + 0x10]
lea eax, [edi + ecx]
inc eax
not ebx
or ebx, eax
mov dword [esi + 0x1c], ebx
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 0x1c]
mov ecx, eax
or ecx, 0x67
and eax, 0x67
add eax, ecx
mov ecx, dword [esi + 0x18]
inc al
mov edx, dword [esi + 8]
mov byte [ebx + edx - 0xa7], al
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 8]
inc ecx
inc eax
dec edx
cmp eax, 0xf7
jne 0x41b7e0
lea eax, [esi + 0x20]
push eax
push 0x41bb70
push ebx
mov edi, dword [esi + 4]
push edi
call fcn.0041c230
add esp, 0x10
mov ebx, eax
jmp dword [0x447084]