Function at 0x44ccc0
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x54
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov ecx, dword [ebp + 8]
xor eax, eax
add ecx, dword [ebp + 0xc]
cmp dword [ebp + 0xc], 0x40
push edi
mov dword [ebp - 0x3c], ebx
lea edi, [ebx - 5]
mov dword [ebp - 8], esi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x30], ecx
jb 0x44d239
cmp ebx, 8
jb 0x44d239
cmp esi, 0x2001
ja 0x44cd0f
pop edi
pop esi
mov eax, 0xc00000bb
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
push 0x20000
push 0
push dword [ebp + 0x14]
call sub.msvcrt.dll_memset
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [ebp - 0x4c], ebx
add edi, esi
lea ebx, [eax + 4]
mov dword [ebp - 0x18], eax
mov al, byte [esi]
add esp, 0xc
mov byte [ebx], al
mov edx, 2
mov eax, esi
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x54], ecx
inc ebx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x24], ecx
mov ecx, eax
lea esi, [eax + 1]
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x2c], ecx
lea ecx, [ecx]
add ecx, 0x2000
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jbe 0x44cd72
mov ecx, edi
mov dword [ebp - 0x34], edi
mov edi, dword [ebp - 0x3c]
add edi, esi
mov dword [ebp - 0x38], edi
cmp ecx, edi
jae 0x44cd81
mov dword [ebp - 0x38], ecx
and dword [ebp - 0x24], 0x3fff
cmp dword [ebp - 0x2c], ecx
jae 0x44ce00
mov edx, dword [ebp - 0x24]
mov eax, ecx
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp - 0x2c]
add edi, 0x20000
mov ebx, dword [ebp - 0x34]
sub eax, esi
lea edi, [edi + edx*4]
add edx, eax
mov dword [ebp - 0x24], edx
jmp 0x44cdb0
movzx eax, byte [esi + 2]
lea edi, [edi + 4]
movzx ecx, word [eax*2 + 0x409950]
movzx eax, byte [esi]
movzx eax, word [eax*2 + 0x409550]
xor ecx, eax
movzx eax, byte [esi + 1]
movzx eax, word [eax*2 + 0x409750]
xor ecx, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + ecx*4]
mov dword [edi - 4], eax
mov eax, dword [ebp + 0x14]
mov dword [eax + ecx*4], esi
inc esi
cmp esi, ebx
jb 0x44cdb0
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x1c]
lea ecx, [ecx]
lea ecx, [esi - 0x2000]
mov edi, 0x2000
mov dword [ebp - 0xc], ecx
sub edi, eax
cmp esi, dword [ebp - 0x38]
jb 0x44ce31
mov eax, dword [ebp - 0x34]
cmp esi, eax
jae 0x44d1cd
push esi
mov edx, eax
lea ecx, [ebp - 0x54]
call fcn.0044c700
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x14]
add ecx, edi
mov edx, dword [esi]
and ecx, 0x3fff
mov dword [ebp - 0x44], edx
mov ecx, dword [eax + ecx*4 + 0x20000]
cmp ecx, dword [ebp - 0xc]
jb 0x44ceb8
mov eax, dword [ecx]
xor eax, edx
je 0x44cf56
test eax, 0xffffff
je 0x44cf35
sub ecx, dword [ebp - 8]
mov eax, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [eax + ecx*4 + 0x20000]
cmp ecx, dword [ebp - 0xc]
jb 0x44ceb8
mov eax, dword [ecx]
xor eax, edx
je 0x44cf56
test eax, 0xffffff
je 0x44cf35
sub ecx, dword [ebp - 8]
mov eax, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [eax + ecx*4 + 0x20000]
cmp ecx, dword [ebp - 0xc]
jb 0x44ceb8
mov eax, dword [ecx]
xor eax, edx
je 0x44cf56
test eax, 0xffffff
je 0x44cf35
mov ecx, dword [ebp - 0xc]
inc esi
mov byte [ebx], dl
inc ecx
mov edx, dword [ebp - 0x14]
inc ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0xc], ecx
lea eax, [edx + edx]
test edx, edx
jle 0x44cedd
mov edx, eax
mov dword [ebp - 0x14], edx
jmp 0x44ce10
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x18], ebx
add ebx, 4
ret
add al, 0x89
pop ebp
cld
mov dword [edx], eax
mov edx, 1
mov eax, dword [ebp - 0x30]
add eax, 0xffffffd7
mov dword [ebp - 0x14], edx
cmp ebx, eax
jb 0x44ce10
mov eax, dword [ebp - 8]
mov edi, dword [ebp - 0x3c]
add edi, eax
cmp esi, edi
jae 0x44d1fb
cmp ebx, dword [ebp - 0x30]
jae 0x44d239
mov al, byte [esi]
inc esi
mov byte [ebx], al
inc ebx
lea eax, [edx + edx]
test edx, edx
jle 0x44d1e3
mov edx, eax
jmp 0x44d1f3
mov eax, esi
mov dword [ebp - 0x10], 3
sub eax, ecx
xor ebx, ebx
mov dword [ebp - 0x20], eax
lea eax, [esi - 0x2000]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], ebx
jmp 0x44d0e5
xor ebx, ebx
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x1c], ebx
mov edi, dword [ebp - 8]
mov eax, esi
add edi, dword [ebp - 0x3c]
add eax, 0x24
mov ebx, dword [ebp - 0x1c]
add ecx, 4
mov dword [ebp - 0x40], esi
add esi, 4
cmp eax, edi
jae 0x44cff7
lea ecx, [ecx]
mov edx, dword [ecx]
mov eax, dword [esi]
cmp eax, edx
jne 0x44d094
mov edx, dword [ecx + 4]
mov eax, dword [esi + 4]
cmp eax, edx
jne 0x44d08e
mov edx, dword [ecx + 8]
mov eax, dword [esi + 8]
cmp eax, edx
jne 0x44d086
mov edx, dword [ecx + 0xc]
mov eax, dword [esi + 0xc]
cmp eax, edx
jne 0x44d07e
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x10]
cmp eax, edx
jne 0x44d076
mov edx, dword [ecx + 0x14]
mov eax, dword [esi + 0x14]
cmp eax, edx
jne 0x44d06e
mov edx, dword [ecx + 0x18]
mov eax, dword [esi + 0x18]
cmp eax, edx
jne 0x44d066
mov edx, dword [ecx + 0x1c]
mov eax, dword [esi + 0x1c]
cmp eax, edx
jne 0x44d05e
add esi, 0x20
add ecx, 0x20
lea eax, [esi + 0x20]
cmp eax, edi
jb 0x44cf80
cmp esi, edi
jae 0x44d00c
jmp 0x44d000
mov al, byte [esi]
cmp al, byte [ecx]
jne 0x44d00c
inc esi
inc ecx
cmp esi, edi
jb 0x44d000
mov edx, dword [ebp - 0x40]
mov eax, esi
sub eax, edx
cmp eax, dword [ebp - 0x10]
jbe 0x44d0c9
sub esi, ecx
mov edi, eax
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x20], esi
cmp ecx, edx
jbe 0x44d0ce
mov esi, edx
mov edx, dword [ebp - 0x20]
lea eax, [edi - 3]
mov ebx, dword [ebp - 4]
add esi, edi
mov dword [ebp - 0x1c], esi
lea edx, [edx*8 - 8]
cmp eax, 7
jae 0x44d10c
add edx, eax
mov word [ebx], dx
add ebx, 2
ret
add cl, byte [ecx + 0x2ee9e055]
add dword [eax], eax
invalid
add esi, 0x1c
add ecx, 0x1c
jmp 0x44d094
add esi, 0x18
add ecx, 0x18
jmp 0x44d094
add esi, 0x14
add ecx, 0x14
jmp 0x44d094
add esi, 0x10
add ecx, 0x10
jmp 0x44d094
add esi, 0xc
add ecx, 0xc
jmp 0x44d094
add esi, 8
add ecx, 8
jmp 0x44d094
add esi, 4
add ecx, 4
cmp al, dl
jne 0x44d00c
mov al, byte [esi + 1]
cmp al, byte [ecx + 1]
je 0x44d0ab
inc esi
inc ecx
jmp 0x44d00c
mov al, byte [esi + 2]
cmp al, byte [ecx + 2]
je 0x44d0be
add esi, 2
add ecx, 2
jmp 0x44d00c
add esi, 3
add ecx, 3
jmp 0x44d00c
mov edi, dword [ebp - 0x10]
add ebx, eax
sub ecx, eax
mov esi, edx
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0xc]
inc ebx
mov dword [ebp - 0x1c], ebx
cmp ebx, 0x18
jae 0x44d030
sub ecx, dword [ebp - 8]
mov edi, dword [ebp + 0x14]
and ecx, 0x3fff
mov ecx, dword [edi + ecx*4 + 0x20000]
mov edi, dword [ebp - 0x10]
cmp ecx, eax
jb 0x44d030
cmp edx, dword [ecx]
jne 0x44d0d8
jmp 0x44cf62
mov edi, dword [ebp - 0x28]
or edx, 7
mov word [ebx], dx
sub eax, 7
add ebx, 2
mov dword [ebp - 0x20], edx
mov dword [ebp - 4], ebx
test edi, edi
jne 0x44d138
mov dword [ebp - 0x28], ebx
cmp eax, 0xf
jae 0x44d132
mov byte [ebx], al
inc ebx
jmp 0x44d18c
mov byte [ebx], 0xf
inc ebx
jmp 0x44d157
mov cl, byte [edi]
cmp eax, 0xf
jae 0x44d14d
shl al, 4
or al, cl
mov byte [edi], al
xor edi, edi
mov dword [ebp - 0x28], edi
jmp 0x44d18f
or cl, 0xf0
mov byte [edi], cl
xor ecx, ecx
mov dword [ebp - 0x28], ecx
sub eax, 0xf
lea ecx, [ebx + 1]
cmp eax, 0xff
jae 0x44d16a
mov byte [ebx], al
mov ebx, ecx
jmp 0x44d18c
mov byte [ebx], 0xff
add eax, 0x16
lea ebx, [ecx + 2]
mov dword [ebp - 4], ebx
cmp eax, 0x10000
jae 0x44d182
mov word [ecx], ax
jmp 0x44d18f
xor edx, edx
mov word [ecx], dx
mov dword [ebx], eax
add ebx, 4
mov dword [ebp - 4], ebx
mov edx, dword [ebp - 0x14]
lea eax, [edx*2 + 1]
test edx, edx
jle 0x44d1a1
mov edx, eax
jmp 0x44d1b4
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x18], ebx
add ebx, 4
mov dword [ebp - 4], ebx
mov dword [edx], eax
mov edx, 1
mov eax, dword [ebp - 0x30]
add eax, 0xffffffd7
mov dword [ebp - 0x14], edx
cmp ebx, eax
mov eax, dword [ebp - 8]
jae 0x44cf07
jmp 0x44ce00
mov edi, dword [ebp - 0x48]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x2c]
cmp esi, edi
jb 0x44cd60
jmp 0x44cf07
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x18], ebx
add ebx, 4
mov dword [edx], eax
mov edx, 1
cmp esi, edi
jb 0x44cf14
cmp ebx, dword [ebp - 0x30]
jae 0x44d239
test edx, edx
jle 0x44d20f
lea edx, [edx*2 + 1]
test edx, edx
jg 0x44d204
sub ebx, dword [ebp + 8]
lea eax, [edx*2 + 1]
mov edx, dword [ebp - 0x18]
mov dword [edx], eax
mov eax, dword [ebp + 0x10]
mov dword [eax], ebx
cmp ebx, 8
jae 0x44d22e
mov dword [eax], 8
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
pop edi
pop esi
mov eax, 0xc0000023
pop ebx
mov esp, ebp
pop ebp
ret 0x1c