Function at 0x4439f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
mov edi, dword [esp + 0x34]
mov dword [esp + 4], 0xf4f5fafb
mov byte [esp + 8], 0
mov eax, 0x51b37a56
nop
nop
nop
movzx ecx, byte [esp + eax - 0x51b37a52]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x365
xor edx, 0x2c0c8365
and ecx, 0x10a3789a
sub ecx, edx
mov edx, ecx
and edx, 0xe7769c51
xor ecx, 0x677e9c51
lea ecx, [ecx + edx*2]
add ecx, 0x54c1b4d9
mov edx, ecx
xor edx, 0x73
and ecx, 0xc
add ecx, ecx
sub ecx, edx
mov byte [esp + eax - 0x51b37a52], cl
inc eax
cmp eax, 0x51b37a5b
jne 0x443a10
mov esi, dword [esp + 4]
mov eax, dword [0x44f6fc]
test eax, eax
je 0x443abe
xor ecx, ecx
mov edx, dword [0x44f700]
nop
cmp dword [edx + ecx*8], 0x3602324e
je 0x443a90
inc ecx
cmp eax, ecx
jne 0x443a80
jmp 0x443abe
mov eax, dword [edx + ecx*8 + 4]
cmp eax, esi
je 0x443abe
lea ecx, [esp + 0x10]
push ecx
push 0
push 0
push 1
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x44f704]
push eax
call fcn.0043f170
add esp, 0x24
mov esi, eax
cmp esi, 0xc0000023
jne 0x443d37
push dword [esp + 0x10]
call fcn.0043c430
add esp, 4
mov dword [esp], eax
mov ebx, dword [esp + 0x10]
mov dword [esp + 4], 0xf4f5fafb
mov byte [esp + 8], 0
mov edx, 0x51b37a56
nop
movzx esi, byte [esp + edx - 0x51b37a52]
mov ecx, edx
and ecx, esi
add ecx, ecx
sub esi, ecx
add esi, edx
mov ecx, esi
and ecx, 0x365
xor ecx, 0x2c0c8365
and esi, 0x10a3789a
sub esi, ecx
mov ecx, esi
and ecx, 0xe7769c51
xor esi, 0x677e9c51
lea ecx, [esi + ecx*2]
add ecx, 0x54c1b4d9
mov esi, ecx
xor esi, 0x73
and ecx, 0xc
add ecx, ecx
sub ecx, esi
mov byte [esp + edx - 0x51b37a52], cl
inc edx
cmp edx, 0x51b37a5b
jne 0x443af0
mov esi, dword [esp + 4]
mov edx, dword [0x44f6fc]
test edx, edx
je 0x443bb9
mov ebp, esi
xor esi, esi
mov ecx, dword [0x44f700]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ecx + esi*8], 0x3602324e
je 0x443b82
inc esi
cmp edx, esi
jne 0x443b70
mov esi, ebp
jmp 0x443bb9
mov edx, dword [ecx + esi*8 + 4]
mov esi, ebp
cmp edx, ebp
je 0x443bb9
lea ecx, [esp + 0x10]
push ecx
push ebx
push dword [esp + 8]
push 1
push dword [esp + 0x40]
push dword [esp + 0x40]
push 6
push dword [0x44f704]
push edx
mov esi, eax
call fcn.0043f170
add esp, 0x24
mov ecx, eax
mov eax, esi
mov esi, ecx
test esi, esi
mov ecx, dword [esp]
mov ebp, dword [esp + 0x40]
mov ebx, dword [esp + 0x44]
js 0x443d2e
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x38]
test esi, esi
mov edx, dword [esp + 0x3c]
je 0x443cbd
test edi, edi
je 0x443cb6
mov ebx, dword [ecx + 0x10]
shr ebx, 1
mov ecx, dword [esi]
cmp ecx, ebx
jb 0x443bf5
mov ecx, ebx
test ecx, ecx
mov ebx, dword [esp + 0x44]
je 0x443cae
add eax, 0x14
mov dword [esp + 0xc], ecx
and ecx, 3
je 0x443c44
xor esi, esi
nop
movzx ebp, word [eax]
xor edx, edx
test bp, bp
setne dl
lea eax, [eax + edx*2]
mov word [edi], bp
add edi, 2
inc esi
cmp ecx, esi
jne 0x443c10
mov ecx, dword [esp + 0xc]
sub ecx, esi
mov ebp, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
cmp dword [esp + 0xc], 4
jae 0x443c50
jmp 0x443cae
mov ecx, dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jb 0x443cae
nop
movzx edx, word [eax]
xor ebx, ebx
test dx, dx
setne bl
lea esi, [eax + ebx*2]
mov word [edi], dx
movzx eax, word [eax + ebx*2]
xor edx, edx
test ax, ax
setne dl
lea ebx, [esi + edx*2]
mov word [edi + 2], ax
movzx eax, word [esi + edx*2]
xor edx, edx
test ax, ax
setne dl
lea esi, [ebx + edx*2]
mov word [edi + 4], ax
movzx edx, word [ebx + edx*2]
xor eax, eax
test dx, dx
setne al
mov word [edi + 6], dx
add edi, 8
lea eax, [esi + eax*2]
add ecx, 0xfffffffc
jne 0x443c50
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
mov word [edi], 0
mov ecx, dword [esp]
mov eax, dword [ecx + 0x10]
shr eax, 1
mov dword [esi], eax
test edx, edx
je 0x443cc6
mov eax, dword [ecx + 4]
mov dword [edx], eax
test ebx, ebx
mov esi, dword [esp + 0x14]
je 0x443d2e
test ebp, ebp
je 0x443d29
mov eax, dword [ebx]
mov ecx, dword [ecx + 0xc]
cmp eax, ecx
jb 0x443cdd
mov eax, ecx
mov ebx, dword [esp]
mov esi, dword [ebx + 8]
add esi, ebx
mov ecx, eax
shr ecx, 2
mov edx, eax
and edx, 0xfffffffc
mov edi, ebp
add ebp, edx
add edx, esi
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov ecx, eax
shr ecx, 1
and ecx, 1
mov esi, edx
mov edi, ebp
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov ecx, ebx
test al, 1
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x14]
je 0x443d29
and eax, 2
movzx ecx, byte [edx + eax]
mov byte [ebp + eax], cl
mov ecx, dword [esp]
mov eax, dword [ecx + 0xc]
mov dword [ebx], eax
push ecx
call fcn.0043c4c0
add esp, 4
mov eax, esi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret