Function at 0x41d0a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov eax, dword [esp + 0xa8]
mov ebx, dword [esp + 0xa4]
mov ecx, dword [eax + 4]
xor edx, edx
nop
nop
nop
cmp word [ecx + edx], 0
lea edx, [edx + 2]
jne 0x41cf70
lea esi, [ecx + edx]
add esi, 0xfffffffe
mov eax, ecx
not eax
and eax, esi
add edx, ecx
mov esi, 1
sub esi, edx
and esi, ecx
sub eax, esi
sar eax, 1
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx], 0
lea edx, [edx + 2]
jne 0x41cfa0
add eax, 0x21
lea esi, [ebx + edx]
add esi, 0xfffffffe
mov ecx, ebx
not ecx
and ecx, esi
add edx, ebx
mov esi, 1
sub esi, edx
and esi, ebx
sub ecx, esi
sar ecx, 1
mov edx, ecx
and edx, eax
xor ecx, eax
lea eax, [ecx + edx*2]
add eax, 0x1e
test eax, eax
jns 0x41cfdf
mov eax, 0xffffffff
jmp 0x41cfe9
lea eax, [ecx + edx*2]
lea eax, [eax*2 + 0x3c]
push eax
call fcn.00408770
add esp, 4
mov dword [esp + 0x4c], 0xc357c1be
mov dword [esp + 0x50], 0xc7a3c557
mov dword [esp + 0x54], 0xcb89c95a
mov dword [esp + 0x58], 0xcfa0cda3
mov dword [esp + 0x5c], 0xf397f164
mov dword [esp + 0x60], 0xf762f56c
mov dword [esp + 0x64], 0xfb9ef9b1
mov dword [esp + 0x68], 0xffaafda1
mov dword [esp + 0x6c], 0xe3bbe1b2
mov dword [esp + 0x70], 0xe7bfe5b0
mov dword [esp + 0x74], 0xebbde9be
mov dword [esp + 0x78], 0xefb7edbe
mov dword [esp + 0x7c], 0x136e1145
mov dword [esp + 0x80], 0x1772157d
mov dword [esp + 0x84], 0x1b1a197a
mov word [esp + 0x88], 0
mov byte [esp + 0x8a], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0x50
xor cl, byte [esp + edx + 0x4c]
add cl, 0x70
mov byte [esp + edx + 0x4c], cl
inc edx
cmp edx, 0x3f
jne 0x41d090
mov dword [esp], eax
mov dword [esp + 4], 0x21ab27c0
mov dword [esp + 8], 0xddb323ac
mov dword [esp + 0xc], 0xd93ddf4e
mov dword [esp + 0x10], 0xd545db41
mov dword [esp + 0x14], 0xd14ad730
mov dword [esp + 0x18], 0xcd4cd34f
mov dword [esp + 0x1c], 0xc941cf2f
mov dword [esp + 0x20], 0xc546cb5c
mov dword [esp + 0x24], 0xc151c720
mov dword [esp + 0x28], 0xfd48c351
mov dword [esp + 0x2c], 0xf961ff2b
mov dword [esp + 0x30], 0xf576fb70
mov dword [esp + 0x34], 0xf160f76b
mov dword [esp + 0x38], 0xed69f37d
mov dword [esp + 0x3c], 0xe978ef7d
mov dword [esp + 0x40], 0xe53feb3d
mov dword [esp + 0x44], 0xe1e6e731
mov byte [esp + 0x4a], 0
mov word [esp + 0x48], 0
mov eax, 0xb2c3d879
mov ecx, 0x4d3c2786
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x4d3c278b]
mov ebp, ecx
xor ebp, esi
lea edx, [ecx - 0x4d3c2700]
and edx, esi
not esi
and esi, ecx
sub esi, ebp
add esi, eax
or edx, esi
mov esi, 0x7dd33a5d
sub esi, edx
or esi, 1
lea ebp, [edx + esi]
add ebp, 0x822cc5a3
mov esi, ebp
and esi, 0xfd
mov edi, ebp
and edi, 2
or ebp, 2
imul ebp, edi
xor edi, 2
imul edi, esi
xor edx, 1
add edx, ebp
add edx, edi
add dl, 0xa2
mov byte [esp + eax + 0x4d3c278b], dl
inc eax
dec ecx
cmp eax, 0xb2c3d8c0
jne 0x41d150
mov eax, dword [esp + 0xa8]
mov ecx, dword [eax + 4]
movzx edx, word [ecx]
mov esi, dword [esp]
mov eax, esi
test dx, dx
je 0x41d1e1
add ecx, 2
mov eax, esi
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x41d1d0
mov word [eax], 0
movzx ecx, word [esp + 4]
test cx, cx
je 0x41d211
lea edx, [esp + 6]
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 0x41d200
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x41d241
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 0x41d230
mov word [eax], 0
movzx ecx, word [esp + 0x4c]
test cx, cx
je 0x41d271
lea edx, [esp + 0x4e]
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 0x41d260
mov word [eax], 0
mov eax, dword [esp + 0xac]
mov ebp, dword [eax]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx], 0
lea ecx, [ecx + 2]
jne 0x41d290
lea edx, [ecx + ebp]
add edx, 0xfffffffe
mov eax, ebp
not eax
and eax, edx
add ecx, ebp
mov edx, 1
sub edx, ecx
and edx, ebp
sub eax, edx
mov ecx, dword [esp + 0xa8]
mov edx, dword [ecx]
xor edi, edi
nop
cmp word [edx + edi], 0
lea edi, [edi + 2]
jne 0x41d2c0
lea esi, [edx + edi]
add esi, 0xfffffffe
mov ecx, edx
not ecx
and ecx, esi
add edi, edx
mov esi, 1
sub esi, edi
and esi, edx
sub ecx, esi
mov edx, dword [esp + 0xa8]
mov edx, dword [edx + 8]
xor ebx, ebx
nop
cmp word [edx + ebx], 0
lea ebx, [ebx + 2]
jne 0x41d2f0
sar eax, 1
sar ecx, 1
lea esi, [edx + ebx]
add esi, 0xfffffffe
mov edi, edx
not edi
and edi, esi
add ebx, edx
mov esi, 1
sub esi, ebx
and esi, edx
sub edi, esi
sar edi, 1
add ecx, eax
lea eax, [edi + ecx]
add eax, 0xb
test eax, eax
jns 0x41d32c
mov eax, 0xffffffff
jmp 0x41d335
add ecx, edi
lea eax, [ecx*2 + 0x16]
push eax
call fcn.00408770
add esp, 4
mov edi, eax
mov dword [esp + 4], 0x77d779d3
mov dword [esp + 8], 0x73c675c0
mov dword [esp + 0xc], 0x4fc271cd
mov dword [esp + 0x10], 0x4bb94dc3
mov dword [esp + 0x14], 0x4948
mov byte [esp + 0x18], 0
mov edx, 0x96
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x92]
mov ebx, esi
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xbd
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0x12
mov byte [esp + edx - 0x92], al
inc edx
cmp edx, 0xab
jne 0x41d380
movzx ecx, word [esp + 4]
mov eax, edi
test cx, cx
je 0x41d3f1
lea edx, [esp + 6]
mov eax, edi
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 0x41d3e0
mov word [eax], 0
movzx ecx, word [ebp]
test cx, cx
je 0x41d422
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x41d410
mov word [eax], 0x5f
add eax, 2
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx]
movzx edx, word [ecx]
test dx, dx
mov esi, dword [esp]
je 0x41d461
add ecx, 2
nop
nop
nop
nop
nop
nop
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 0x41d450
mov word [eax], 0x5f
add eax, 2
mov ecx, dword [esp + 0xa8]
mov ecx, dword [ecx + 8]
movzx edx, word [ecx]
test dx, dx
je 0x41d491
add ecx, 2
nop
nop
mov word [eax], dx
add eax, 2
movzx edx, word [ecx]
add ecx, 2
test dx, dx
jne 0x41d480
mov word [eax], 0
mov dword [esp + 4], 0x313e3f06
xor eax, eax
mov ecx, eax
add cl, 0xb5
xor cl, byte [esp + eax + 4]
add cl, 0x77
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 4
jne 0x41d4a0
lea eax, [esp + 4]
push 0
push 1
push 0
push eax
push esi
push edi
push dword [esp + 0xb8]
call fcn.0041d7f0
add esp, 0x1c
mov ebx, eax
jmp dword [0x446244]