Function at 0x441d20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov eax, dword [esp + 0x38]
test eax, eax
je 0x441d6a
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x441d40
sar ecx, 1
mov edx, ecx
and edx, 2
mov esi, ecx
or ecx, 2
imul ecx, edx
xor edx, 2
and esi, 0xfffd
imul esi, edx
add ecx, esi
jmp 0x441d6c
xor ecx, ecx
mov word [esp + 0x18], cx
mov edx, eax
test eax, eax
je 0x441d7c
add ecx, 2
mov edx, ecx
mov word [esp + 0x1a], dx
mov dword [esp + 0x1c], eax
mov dword [esp], 0x989b9a9d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x9b
xor cl, byte [esp + eax]
add cl, 0xf9
mov byte [esp + eax], cl
inc eax
cmp eax, 7
jne 0x441da0
mov esi, dword [esp]
mov eax, dword [0x44e1c8]
test eax, eax
je 0x441e0f
xor ecx, ecx
mov edx, dword [0x44e1cc]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x877f203a
je 0x441de0
inc ecx
cmp eax, ecx
jne 0x441dd0
jmp 0x441e0f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x441e0f
lea ecx, [esp + 0xc]
lea edx, [esp + 0x18]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 0x18
push eax
push dword [0x44e1d0]
call fcn.0043e5b0
add esp, 0x24
mov esi, eax
mov dword [esp], 0x1c6c7e9
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor ecx, ecx
mov eax, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx]
lea edi, [ecx + 0x13d25fd1]
and edi, edx
add edi, edi
neg edi
lea ebx, [ecx + edi]
add ebx, 0x13d25fd1
add bl, dl
add bl, 0xeb
mov byte [esp + ecx], bl
mov edx, ecx
mov edi, ecx
xor eax, 1
add eax, ecx
xor ecx, 0xfffffffe
or edx, 1
and edx, ecx
and edi, 6
sub eax, edi
add eax, edx
mov ecx, eax
cmp eax, 7
jb 0x441e30
cmp esi, dword [esp]
jne 0x44200e
push dword [esp + 0xc]
call fcn.0043b900
add esp, 4
mov ecx, dword [esp + 0xc]
mov dword [esp + 8], ecx
mov dword [esp + 0x10], 0x313e3f3e
mov word [esp + 0x14], 0
xor edx, edx
nop
nop
mov ebx, edx
not ebx
movzx edi, byte [esp + edx + 0x10]
lea esi, [edx + 0x5822b535]
mov ebp, esi
xor ebp, edi
mov ecx, 0x27dd4aca
sub ecx, edx
or ecx, ebp
not ecx
add ecx, ecx
sub ecx, esi
mov esi, ecx
xor esi, edi
not ecx
and ecx, edi
add ecx, ecx
sub ecx, esi
add cl, 0xf7
mov byte [esp + edx + 0x10], cl
and ebx, 6
mov ecx, edx
and ecx, 1
xor edx, 0xfffffffe
or edx, ebx
not edx
lea edx, [edx + ecx*2]
cmp edx, 6
jb 0x441ea0
mov edx, dword [esp + 0x10]
mov dword [esp], 0x989b9a9d
mov word [esp + 4], 0
mov byte [esp + 6], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
add bl, 0x9b
xor bl, byte [esp + ecx]
add bl, 0xf9
mov byte [esp + ecx], bl
inc ecx
cmp ecx, 7
jne 0x441f10
mov esi, dword [esp]
mov ecx, dword [0x44e1c8]
test ecx, ecx
je 0x441f84
xor edi, edi
mov ebp, dword [0x44e1cc]
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + edi*8], 0x877f203a
je 0x441f51
inc edi
cmp ecx, edi
jne 0x441f40
jmp 0x441f84
mov ecx, dword [ebp + edi*8 + 4]
cmp ecx, esi
je 0x441f84
lea esi, [esp + 0xc]
lea edi, [esp + 0x18]
push esi
push dword [esp + 0xc]
push eax
push edx
push edi
push dword [esp + 0x48]
push 0x18
push ecx
push dword [0x44e1d0]
mov edi, eax
call fcn.0043e5b0
add esp, 0x24
mov esi, eax
mov eax, edi
test esi, esi
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
js 0x442005
test edi, edi
je 0x441f99
mov ecx, dword [eax + 4]
mov dword [edi], ecx
cmp dword [esp + 0x44], 0
je 0x442005
test edx, edx
je 0x441ffc
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x441fb3
mov edx, ecx
lea ebx, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov ebp, dword [esp + 0x40]
mov edi, ebp
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
mov ecx, edx
and ecx, 0xfffffffc
add ebp, ecx
lea ebx, [eax + ecx]
add ebx, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 8], ebx
mov edi, ebp
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test dl, 1
je 0x441ffc
and edx, 2
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + edx]
mov byte [ebp + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x44]
mov dword [edx], ecx
push eax
call fcn.0043b990
add esp, 4
mov eax, esi
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret