Function at 0x41d6c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov ebp, dword [eax]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebp + edx + 2], 0
lea edx, [edx + 2]
jne 0x41d6e0
mov ebx, dword [ecx + 4]
mov edi, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
cmp word [ebx + edi + 2], 0
lea edi, [edi + 2]
jne 0x41d700
sar edx, 1
sar edi, 1
lea eax, [edx + 0x1b]
mov ecx, edi
and ecx, eax
xor eax, edi
lea eax, [eax + ecx*2]
test eax, eax
mov dword [esp + 0x40], edx
jns 0x41d72c
mov eax, 0xffffffff
jmp 0x41d72e
add eax, eax
push eax
call fcn.004095d0
add esp, 4
mov dword [esp + 4], 0xf7a2f95c
mov dword [esp + 8], 0xf34df547
mov dword [esp + 0xc], 0xcf7af151
mov dword [esp + 0x10], 0xcb97cdac
mov dword [esp + 0x14], 0xc74ac940
mov dword [esp + 0x18], 0xc370c579
mov dword [esp + 0x1c], 0xdf67c14f
mov dword [esp + 0x20], 0xdb68dd6f
mov dword [esp + 0x24], 0xd779d9b8
mov dword [esp + 0x28], 0xd35ed569
mov dword [esp + 0x2c], 0x2f97d15c
mov dword [esp + 0x30], 0x2b912d9e
mov dword [esp + 0x34], 0x278229a7
mov dword [esp + 0x38], 0x2524
mov byte [esp + 0x3c], 0
xor edx, edx
nop
nop
mov ecx, edx
add cl, 0xd6
xor cl, byte [esp + edx + 4]
add cl, 0xd2
mov byte [esp + edx + 4], cl
add edx, 0xaca67714
mov ecx, edx
and ecx, 0x6d
or edx, 0x535988ed
add edx, ecx
cmp edx, 0x39
jb 0x41d7b0
movzx ecx, word [ebp]
mov esi, eax
test cx, cx
je 0x41d802
add ebp, 2
mov esi, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41d7f0
mov dword [esp + 0x44], eax
mov word [esi], 0
movzx ecx, word [esp + 4]
test cx, cx
je 0x41d831
lea edx, [esp + 6]
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x41d820
mov word [esi], 0
movzx ecx, word [ebx]
test cx, cx
mov dword [esp + 0x50], edi
je 0x41d861
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x41d850
mov word [esi], 0
mov eax, dword [esp + 0x6c]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x41d880
mov ecx, dword [esp + 0x70]
mov ebp, dword [ecx + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x41d8a0
mov edx, dword [esp + 0x74]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x41d8c0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x41d8e4
mov eax, 0xffffffff
jmp 0x41d8ed
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.004095d0
add esp, 4
mov esi, eax
movzx eax, word [edi]
mov edx, esi
test ax, ax
je 0x41d921
add edi, 2
mov edx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x41d910
mov word [edx], 0x2f
mov dword [esp + 4], 0xf1c90fdd
mov dword [esp + 8], 0xf566f368
mov dword [esp + 0xc], 0xf958f753
mov dword [esp + 0x10], 0xfd51fb6d
mov dword [esp + 0x14], 0xe150ff6d
mov dword [esp + 0x18], 0xe533e375
mov word [esp + 0x1c], 0xe7e4
mov dword [esp + 0x1e], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xfd
xor cl, byte [esp + eax + 4]
add cl, 0xf
mov byte [esp + eax + 4], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x1e
jb 0x41d970
add edx, 2
movzx eax, word [ebp]
test ax, ax
mov edi, dword [esp + 0x74]
je 0x41d9c2
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x41d9b0
mov word [edx], 0
movzx eax, word [esp + 4]
test ax, ax
je 0x41d9f1
lea ecx, [esp + 6]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41d9e0
mov word [edx], 0
movzx eax, word [ebx]
test ax, ax
je 0x41da21
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x41da10
mov dword [esp + 0x48], edx
mov word [edx], 0
mov dword [esp + 4], 0x8186876e
mov byte [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea edx, [eax - 0x2d62319f]
and edx, ecx
add edx, edx
neg edx
add edx, eax
add edx, 0xd29dce61
add dl, cl
add dl, 0x1b
mov byte [esp + eax + 4], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 5
jb 0x41da40
lea eax, [esp + 4]
push 0
push 0
push 0xc00000
push eax
mov ebx, dword [esp + 0x54]
push ebx
push esi
push dword [esp + 0x80]
call fcn.00421980
add esp, 0x1c
mov byte [esp + 3], al
jmp dword [0x445cb4]