Function at 0x4415f0
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 0x44163a
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 0x441610
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 0x44163c
xor ecx, ecx
mov word [esp + 0x14], cx
mov edx, eax
test eax, eax
je 0x44164c
add ecx, 2
mov edx, ecx
mov word [esp + 0x16], dx
mov dword [esp + 0x18], eax
mov dword [esp], 0x20272625
mov dword [esp + 4], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx]
mov ebx, eax
and ebx, 2
mov edx, ecx
xor edx, 0x3b269f89
add edx, ebx
xor edx, edi
mov edi, edx
not edi
or edi, 0xd83ee252
add edi, edx
inc edi
mov ebx, edi
and ebx, 0xfd
mov ebp, edi
and ebp, 2
or edi, 2
imul edi, ebp
xor ebp, 2
imul ebp, ebx
xor edx, 0x52
add edx, edi
add edx, ebp
inc dl
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x441670
mov ebx, dword [esp]
mov eax, dword [0x44cd58]
test eax, eax
je 0x44171f
xor ecx, ecx
mov edx, dword [0x44cd5c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x877f203a
je 0x4416f0
inc ecx
cmp eax, ecx
jne 0x4416e0
jmp 0x44171f
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44171f
lea ecx, [esp + 0x10]
lea edx, [esp + 0x14]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 0x18
push eax
push dword [0x44cd60]
call fcn.0043dda0
add esp, 0x24
mov ebx, eax
mov dword [esp], 0x94a4b91
mov word [esp + 4], 0
mov byte [esp + 6], 0
mov eax, 0x97f4e713
mov ecx, 0x680b18ec
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x680b18ed]
mov edi, edx
not edi
lea edx, [edx + edi*2]
mov ebp, 0xfffffffe
sub ebp, edx
and ebp, eax
and edi, ecx
or edi, ebp
mov edx, edi
not edx
and edx, 0x20
add edx, edx
xor edi, 0xa0
sub edx, edi
mov byte [esp + eax + 0x680b18ed], dl
inc eax
dec ecx
cmp eax, 0x97f4e71a
jne 0x441740
cmp ebx, dword [esp]
jne 0x441933
push dword [esp + 0x10]
call fcn.0043af60
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0xd7d6c9c6
mov ecx, 0x51
mov edx, 0xae
nop
nop
nop
nop
movzx edi, byte [esp + edx - 0xa2]
mov ebp, edx
or ebp, edi
mov ebx, ebp
sub ebx, edi
add ebx, ecx
and ebx, ebp
add bl, 0x9a
mov byte [esp + edx - 0xa2], bl
dec ecx
inc edx
cmp ecx, 0x4d
jne 0x4417b0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1c], ecx
mov dword [esp], 0x20272625
mov dword [esp + 4], 0
xor esi, esi
xor ebp, ebp
movzx edi, byte [esp + ebp]
mov ebx, esi
and ebx, 2
mov ecx, ebp
xor ecx, 0x3b269f89
add ecx, ebx
xor ecx, edi
mov edi, ecx
not edi
or edi, 0xd83ee252
add edi, ecx
inc edi
mov ebx, edi
and ebx, 0xfd
mov edx, edi
and edx, 2
or edi, 2
imul edi, edx
xor edx, 2
imul edx, ebx
xor ecx, 0x52
add ecx, edi
add ecx, edx
inc cl
mov byte [esp + ebp], cl
inc ebp
add esi, 2
cmp ebp, 8
jne 0x4417f0
mov ebx, dword [esp]
mov ecx, dword [0x44cd58]
test ecx, ecx
je 0x441871
xor edi, edi
mov ebp, dword [0x44cd5c]
mov esi, dword [esp + 0x44]
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + edi*8], 0x877f203a
je 0x441877
inc edi
cmp ecx, edi
jne 0x441860
jmp 0x4418b1
mov esi, dword [esp + 0x44]
jmp 0x4418b1
mov ecx, dword [ebp + edi*8 + 4]
cmp ecx, ebx
je 0x4418b1
lea edx, [esp + 0x10]
lea esi, [esp + 0x14]
push edx
push dword [esp + 0xc]
push eax
push dword [esp + 0x28]
push esi
mov esi, dword [esp + 0x58]
push dword [esp + 0x48]
push 0x18
push ecx
push dword [0x44cd60]
mov edi, eax
call fcn.0043dda0
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
js 0x44192a
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x4418c2
mov ecx, dword [eax + 4]
mov dword [edx], ecx
test esi, esi
je 0x44192a
cmp dword [esp + 0x40], 0
je 0x441925
mov edx, dword [esi]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x4418d8
mov edx, ecx
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov ebp, dword [esp + 0x40]
mov edi, ebp
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, edx
and ecx, 0xfffffffc
add ebp, ecx
lea esi, [eax + ecx]
add esi, 0xc
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 8], esi
mov edi, ebp
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
test dl, 1
mov esi, dword [esp + 0x44]
je 0x441925
and edx, 2
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + edx]
mov byte [ebp + edx], cl
mov ecx, dword [eax + 8]
mov dword [esi], ecx
push eax
call fcn.0043b010
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret