Function at 0x41f716
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov ebx, dword [esp + 0xa4]
mov eax, dword [esp + 0xa0]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41f280
mov ecx, 0xfffffffe
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41f290
sar eax, 1
sar ecx, 1
add eax, ecx
add eax, 0x21
mov ecx, eax
and ecx, 0x1e
xor eax, 0x1e
lea eax, [eax + ecx*2]
test eax, eax
jns 0x41f2ba
mov eax, 0xffffffff
jmp 0x41f2bc
add eax, eax
push eax
call fcn.00408130
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x48], 0xba79bd85
mov dword [esp + 0x4c], 0xbd8bba7e
mov dword [esp + 0x50], 0xbda3ba7d
mov dword [esp + 0x54], 0xba7cba7e
mov dword [esp + 0x58], 0xbd81ba77
mov dword [esp + 0x5c], 0xba72ba6d
mov dword [esp + 0x60], 0xbd7cbd9e
mov dword [esp + 0x64], 0xbd4ebd54
mov dword [esp + 0x68], 0xbd55bd49
mov dword [esp + 0x6c], 0xbd57bd49
mov dword [esp + 0x70], 0xbd47bd49
mov dword [esp + 0x74], 0xbd5bbd43
mov dword [esp + 0x78], 0xbd78bd46
mov dword [esp + 0x7c], 0xbd72ba8c
mov dword [esp + 0x80], 0xbd08bd75
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, word [esp + eax*2 + 0x48]
lea ecx, [eax - 0x47d318d]
mov esi, 0x7d318c
sub esi, eax
mov edx, ebp
and edx, 0xd319
or edx, 0x7022846
and ebp, 0x2ce6
and esi, 0x681119
and ecx, 0x9b820ce6
or ecx, esi
xor ecx, ebp
xor ecx, edx
mov edx, ecx
and edx, 0x7399
xor edx, 0x80
and ecx, 0x8c66
xor ecx, 0x8846
sub ecx, edx
inc ecx
mov word [esp + eax*2 + 0x48], cx
add eax, 0x954d20a8
mov ecx, eax
and ecx, 0x59
or eax, 0x6ab2df59
add eax, ecx
cmp eax, 0x1e
jb 0x41f350
mov dword [esp + 4], 0x7280726e
mov dword [esp + 8], 0x727a7280
mov dword [esp + 0xc], 0x72767284
mov dword [esp + 0x10], 0x727c727f
mov dword [esp + 0x14], 0x727f7266
mov dword [esp + 0x18], 0x727b7279
mov dword [esp + 0x1c], 0x728a727f
mov dword [esp + 0x20], 0x7295726c
mov dword [esp + 0x24], 0x726e727e
mov dword [esp + 0x28], 0x729f726b
mov dword [esp + 0x2c], 0x7262722b
mov dword [esp + 0x30], 0x729d7290
mov dword [esp + 0x34], 0x7265726f
mov dword [esp + 0x38], 0x7264729f
mov dword [esp + 0x3c], 0x72617261
mov dword [esp + 0x40], 0x721a721b
mov dword [esp + 0x44], 0x72337219
mov eax, 0x2b5703c
mov ecx, 0x56ae078
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [esp + eax*2 - 0x56ae074]
mov esi, eax
xor esi, 0xaa9f0e3a
mov ebp, ecx
and ebp, 0x40e08a
sub ebp, esi
xor ebp, edx
lea edx, [ebp + 0xefef]
not ebp
and ebp, 1
xor edx, 1
lea edx, [edx + ebp*2]
mov word [esp + eax*2 - 0x56ae074], dx
inc eax
add ecx, 2
cmp eax, 0x2b5705e
jne 0x41f460
movzx ecx, word [edi]
mov esi, dword [esp]
mov eax, esi
test cx, cx
je 0x41f4d1
add edi, 2
mov eax, esi
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 0x41f4c0
mov word [eax], 0
movzx ecx, word [esp + 4]
test cx, cx
je 0x41f503
lea edx, [esp + 6]
mov ebp, dword [esp + 0xa0]
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41f4f0
jmp 0x41f50a
mov ebp, dword [esp + 0xa0]
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x41f531
add ebx, 2
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41f520
mov word [eax], 0
movzx ecx, word [esp + 0x48]
test cx, cx
je 0x41f561
lea edx, [esp + 0x4a]
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 0x41f550
mov word [eax], 0
mov eax, dword [esp + 0xa8]
mov ebx, dword [eax]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41f580
sar ecx, 1
lea edx, [ecx*2 + 0x12]
add ecx, 9
xor ecx, 1
mov eax, dword [esp + 0x9c]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41f5b0
and edx, 2
add edx, ecx
sar eax, 1
add eax, edx
lea edx, [eax + eax]
xor eax, 1
mov edi, dword [ebp]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41f5e0
and edx, 2
add edx, eax
sar ecx, 1
add ecx, edx
jns 0x41f5fd
mov ecx, 0xffffffff
jmp 0x41f5ff
add ecx, ecx
push ecx
call fcn.00408130
add esp, 4
mov edi, eax
mov dword [esp + 4], 0x852c855b
mov dword [esp + 8], 0x85238522
mov dword [esp + 0xc], 0x85258535
mov dword [esp + 0x10], 0x857c8521
mov word [esp + 0x14], 0x8594
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [eax + 0x12ec]
xor cx, word [esp + eax*2 + 4]
add ecx, 0x68a0
mov word [esp + eax*2 + 4], cx
inc eax
cmp eax, 9
jne 0x41f640
movzx ecx, word [esp + 4]
mov eax, edi
test cx, cx
je 0x41f681
lea edx, [esp + 6]
mov eax, edi
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41f670
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x41f6b1
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 0x41f6a0
mov word [eax], 0x5f
add eax, 2
mov ecx, dword [esp + 0x9c]
mov ecx, dword [ecx]
movzx edx, word [ecx]
test dx, dx
je 0x41f6e1
add ecx, 2
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x41f6d0
mov word [eax], 0x5f
add eax, 2
mov ecx, dword [ebp]
movzx edx, word [ecx]
test dx, dx
je 0x41f711
add ecx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x41f700
mov word [eax], 0
mov dword [esp + 4], 0x9f3c9f61
xor eax, eax
movzx ecx, word [esp + eax*2 + 4]
lea edx, [eax - 0x561511dd]
xor edx, ecx
add edx, 0xb0a88ee7
mov ecx, edx
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov word [esp + eax*2 + 4], cx
lea eax, [eax + eax*2]
xor eax, 1
cmp eax, 2
jb 0x41f720
lea eax, [esp + 4]
push 0
push 1
push 0
push eax
push esi
push edi
push dword [esp + 0xb0]
call fcn.0041fa70
add esp, 0x1c
mov ebx, eax
jmp dword [0x4409f8]