Function at 0x443770
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov eax, dword [ebp + 0xc]
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 0x443790
sar ecx, 1
mov esi, ecx
and esi, 2
mov edx, ecx
or ecx, 2
imul ecx, esi
xor esi, 2
and edx, 0xfffd
imul edx, esi
lea esi, [edx + ecx]
mov word [esp + 0x28], si
add ecx, edx
add ecx, 2
mov word [esp + 0x2a], cx
mov dword [esp + 0x2c], eax
mov dword [esp + 8], 0x9c9d9e9f
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
xor esi, esi
nop
nop
mov dword [esp + 4], esi
and esi, 0xb
mov ecx, dword [esp + 4]
and ecx, 4
xor ecx, 0x74e17644
sub esi, ecx
mov edi, esi
not edi
lea ecx, [esi + esi*2]
lea edx, [ecx + edi*4]
mov ebx, 0xfc
sub ebx, edx
mov eax, dword [esp + 4]
movzx edx, byte [esp + eax + 8]
lea ecx, [ecx + edi*4]
add ecx, 3
xor ecx, edx
add ecx, edx
and ebx, edx
sub ecx, ebx
lea ebx, [esi + esi]
lea eax, [esi - 1]
neg esi
and esi, ebx
not ebx
and ebx, eax
sub ebx, esi
mov esi, ebx
and esi, edi
add ebx, edi
sub ebx, esi
sub ebx, esi
or ebx, esi
mov esi, ebx
and esi, edx
mov eax, esi
or eax, 2
mov edi, esi
and edi, 2
imul edi, eax
mov eax, ebx
or eax, edx
add ebx, edx
not ebx
add ebx, eax
and ebx, 2
mov edx, esi
and edx, 0xfffffffd
imul edx, ebx
add edx, edi
mov edi, edx
not edi
add edi, esi
sub edx, esi
mov eax, edi
and eax, 0x9116083b
and edx, 0x6ee9f7c4
or edx, eax
xor edx, ecx
or edi, ecx
xor edx, 0x6ee9f7c4
not edi
or edi, edx
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x24]
add eax, 0x322a3bdb
mov ecx, eax
xor ecx, 0xfe
or eax, 1
and ecx, eax
add ecx, eax
mov eax, dword [esp + 4]
mov byte [esp + eax + 8], cl
mov esi, dword [esp + 4]
inc esi
cmp esi, 0x10
jne 0x4437f0
mov ebx, dword [esp + 8]
mov eax, dword [0x44ed90]
test eax, eax
je 0x44391e
xor ecx, ecx
mov edx, dword [0x44ed94]
nop
nop
cmp dword [edx + ecx*8], 0xd07a397f
je 0x4438f0
inc ecx
cmp eax, ecx
jne 0x4438e0
jmp 0x44391e
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x44391e
lea ecx, [esp + 0x20]
lea edx, [esp + 0x28]
push ecx
push 0
push 0
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x44ed98]
push eax
call fcn.0043e300
add esp, 0x24
mov ebx, eax
mov dword [esp + 8], 0x8dfafc9c
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 6
xor eax, 0x86
lea eax, [eax + ecx*2]
inc eax
movzx ecx, al
mov dword [esp + 8], 0x8dfafc79
mov eax, dword [esp + 8]
mov edx, eax
and edx, 6
xor eax, 0x86
lea eax, [eax + edx*2]
shl eax, 8
add eax, 0x100
movzx eax, ax
or eax, ecx
mov dword [esp + 8], 0x8dfafc79
mov ecx, dword [esp + 8]
mov edx, ecx
and edx, 6
xor ecx, 0x86
lea ecx, [ecx + edx*2]
shl ecx, 0x10
add ecx, 0x10000
mov dword [esp + 8], 0x8dfafc39
mov edx, dword [esp + 8]
mov esi, edx
and esi, 6
xor edx, 0x86
lea edx, [edx + esi*2]
shl edx, 0x18
and ecx, 0xff0000
or ecx, eax
lea eax, [edx + ecx]
add eax, 0x1000000
mov dword [esp + 8], 0x8dfafc83
mov ecx, dword [esp + 8]
mov dword [esp + 8], 0x8dfafc84
mov ecx, dword [esp + 8]
mov dword [esp + 8], 0x8dfafc85
mov ecx, dword [esp + 8]
mov dword [esp + 8], 0x8dfafc86
mov ecx, dword [esp + 8]
mov dword [esp + 8], 0x8dfafc87
mov ecx, dword [esp + 8]
cmp ebx, eax
jne 0x443c02
push dword [esp + 0x20]
call fcn.0043c4c0
add esp, 4
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], eax
mov dword [esp + 8], 0x9c9d9e9f
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
xor edx, edx
nop
mov dword [esp + 4], edx
and edx, 0xb
mov eax, dword [esp + 4]
and eax, 4
xor eax, 0x74e17644
sub edx, eax
mov ecx, edx
not ecx
lea eax, [edx + edx*2]
lea esi, [eax + ecx*4]
mov edi, 0xfc
sub edi, esi
mov esi, dword [esp + 4]
movzx esi, byte [esp + esi + 8]
lea ebx, [eax + ecx*4]
add ebx, 3
xor ebx, esi
add ebx, esi
and edi, esi
sub ebx, edi
lea edi, [edx + edx]
lea eax, [edx - 1]
neg edx
and edx, edi
not edi
and edi, eax
sub edi, edx
mov eax, edi
and eax, ecx
add edi, ecx
sub edi, eax
sub edi, eax
or edi, eax
mov ecx, edi
and ecx, esi
mov edx, ecx
or edx, 2
mov eax, ecx
and eax, 2
imul eax, edx
mov edx, edi
or edx, esi
add edi, esi
not edi
add edi, edx
and edi, 2
mov edx, ecx
and edx, 0xfffffffd
imul edx, edi
add edx, eax
mov esi, edx
not esi
add esi, ecx
sub edx, ecx
mov eax, esi
and eax, 0x9116083b
and edx, 0x6ee9f7c4
or edx, eax
xor edx, ebx
or esi, ebx
xor edx, 0x6ee9f7c4
not esi
or esi, edx
mov dword [esp + 0x24], esi
mov ecx, dword [esp + 0x24]
add ecx, 0x322a3bdb
mov eax, ecx
xor eax, 0xfe
or ecx, 1
and eax, ecx
add eax, ecx
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 8], al
mov edx, dword [esp + 4]
inc edx
cmp edx, 0x10
jne 0x443a30
mov ebx, dword [esp + 8]
mov eax, dword [0x44ed90]
test eax, eax
je 0x443b63
xor ecx, ecx
mov edx, dword [0x44ed94]
nop
nop
nop
cmp dword [edx + ecx*8], 0xd07a397f
je 0x443b30
inc ecx
cmp eax, ecx
jne 0x443b20
jmp 0x443b63
mov eax, dword [edx + ecx*8 + 4]
cmp eax, ebx
je 0x443b63
lea ecx, [esp + 0x20]
lea edx, [esp + 0x28]
push ecx
push dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
push ecx
push 2
push edx
push dword [ebp + 8]
push 6
push dword [0x44ed98]
push eax
call fcn.0043e300
add esp, 0x24
mov ebx, eax
test ebx, ebx
js 0x443bf6
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x443b7b
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 4]
mov dword [ecx], eax
cmp dword [ebp + 0x18], 0
je 0x443bf6
cmp dword [ebp + 0x14], 0
je 0x443bea
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 8]
cmp edx, eax
jb 0x443b99
mov edx, eax
mov eax, dword [esp + 0x1c]
lea esi, [eax + 0xc]
mov ecx, edx
shr ecx, 2
mov edi, dword [ebp + 0x14]
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
mov esi, edx
and esi, 0xfffffffc
add esi, dword [ebp + 0x14]
mov ecx, edx
not ecx
or ecx, 0xfffffffc
add eax, ecx
add eax, 0xc
add eax, edx
inc eax
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 4], eax
mov edi, esi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test dl, 1
je 0x443bea
and edx, 2
mov eax, dword [esp + 4]
movzx eax, byte [eax + edx]
mov byte [esi + edx], al
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 8]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
push dword [esp + 0x1c]
call fcn.0043c6e0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret