Function at 0x4439c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ecx], 0
lea ecx, [ecx + 2]
jne 0x4439e0
add ecx, 0xfffffffe
and ecx, 0xfffe
mov word [esp + 0x14], cx
add ecx, 2
mov word [esp + 0x16], cx
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x20272625
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x443a91
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 4]
mov ecx, eax
xor ecx, 0x96c80c9
and eax, 0x96c80c9
lea ecx, [ecx + eax*2]
lea eax, [ecx + edx]
and ecx, edx
mov edx, eax
xor edx, ecx
mov edi, ecx
not edi
and eax, edi
add eax, eax
sub eax, edx
mov edx, eax
not edx
and edx, ecx
and eax, edi
sub eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov ecx, eax
xor ecx, 0xed
and eax, 0x12
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x443a30
mov ebx, dword [esp + 4]
mov eax, dword [0x44e36c]
test eax, eax
je 0x443af9
xor ecx, ecx
mov edx, dword [0x44e370]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0xf81c0144
je 0x443aca
mov edi, ecx
and edi, 1
xor ecx, 1
lea ecx, [ecx + edi*2]
cmp ecx, eax
jb 0x443ab0
jmp 0x443af9
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x443af9
lea ecx, [esp + 0x10]
lea edx, [esp + 0x14]
push ecx
push 0
push 0
push 2
push edx
push dword [esp + 0x48]
push 6
push dword [0x44e374]
push eax
call fcn.0043eec0
add esp, 0x24
mov ebx, eax
mov dword [esp + 4], 0x21e6e7b9
mov byte [esp + 8], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x443b63
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 4]
mov edx, eax
xor edx, 0xac826e59
mov edi, eax
xor edi, 0x537d91a6
or eax, 0x2c826e59
and eax, edi
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x43
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x443b20
cmp ebx, dword [esp + 4]
jne 0x443ce9
push dword [esp + 0x10]
call fcn.0043bc30
add esp, 4
mov ecx, dword [esp + 0x10]
mov dword [esp + 4], 0x20272625
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
mov dword [esp], 0
mov edx, dword [esp]
cmp edx, 6
ja 0x443c02
mov edx, dword [esp]
mov edi, dword [esp]
movzx edi, byte [esp + edi + 4]
mov ebx, edx
xor ebx, 0x96c80c9
and edx, 0x96c80c9
lea ebx, [ebx + edx*2]
lea edx, [ebx + edi]
and ebx, edi
mov edi, edx
xor edi, ebx
mov ebp, ebx
not ebp
and edx, ebp
add edx, edx
sub edx, edi
mov edi, edx
not edi
and edi, ebx
and edx, ebp
sub edx, edi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xc]
mov edi, edx
xor edi, 0xed
and edx, 0x12
add edx, edx
sub edx, edi
mov edi, dword [esp]
mov byte [esp + edi + 4], dl
inc dword [esp]
mov edx, dword [esp]
cmp edx, 7
jb 0x443ba0
mov ebx, dword [esp + 4]
mov edx, dword [0x44e36c]
test edx, edx
je 0x443c61
xor ebp, ebp
mov edi, dword [0x44e370]
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + ebp*8], 0xf81c0144
je 0x443c30
inc ebp
cmp edx, ebp
jne 0x443c20
jmp 0x443c61
mov edx, dword [edi + ebp*8 + 4]
cmp edx, ebx
je 0x443c61
lea edi, [esp + 0x10]
lea ebx, [esp + 0x14]
push edi
push ecx
push eax
push 2
push ebx
push dword [esp + 0x48]
push 6
push dword [0x44e374]
push edx
mov edi, eax
call fcn.0043eec0
add esp, 0x24
mov ebx, eax
mov eax, edi
test ebx, ebx
js 0x443ce0
test esi, esi
je 0x443c6e
mov ecx, dword [eax + 4]
mov dword [esi], ecx
cmp dword [esp + 0x44], 0
je 0x443ce0
mov esi, dword [esp + 0x40]
test esi, esi
je 0x443cd7
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx]
mov ecx, dword [eax + 8]
cmp edx, ecx
jb 0x443c8c
mov edx, ecx
lea ebp, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, esi
xchg esi, ebp
rep movsd dword es:[edi], dword [esi]
xchg esi, ebp
mov ecx, edx
and ecx, 0xfffffffc
add esi, ecx
lea ebp, [eax + ecx]
add ebp, 0xc
mov ecx, edx
not ecx
or ecx, 3
add edx, ecx
inc edx
mov ecx, edx
shr ecx, 1
mov dword [esp + 0x1c], ebp
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
test dl, 1
je 0x443cd7
and edx, 0xfffffffe
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [ecx + edx]
mov byte [esi + edx], cl
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x44]
mov dword [edx], ecx
push eax
call fcn.0043bcc0
add esp, 4
mov eax, ebx
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret