Function at 0x4405a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov ebx, ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x2c], 0x100000
mov dword [esp + 0x18], 0
mov dword [esp + 0xc], 0x20272625
mov byte [esp + 0x10], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0xc]
mov esi, eax
and esi, 0xa
mov edi, ecx
xor edi, 0x76c0655d
add esi, edi
add esi, 0x382159dc
xor esi, edx
mov edx, esi
and edx, 0x62
xor esi, 0xe2
lea edx, [esi + edx*2]
inc dl
mov byte [esp + ecx + 0xc], dl
inc ecx
add eax, 2
cmp ecx, 5
jne 0x440600
mov eax, dword [esp + 0xc]
mov ecx, dword [0x451b2c]
test ecx, ecx
je 0x44068e
xor edx, edx
mov esi, dword [0x451b30]
nop
cmp dword [esi + edx*8], 0xf3285e74
je 0x440660
inc edx
cmp ecx, edx
jne 0x440650
jmp 0x44068e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x44068e
lea eax, [esp + 0x2c]
lea edx, [esp + 0x18]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x24
test eax, eax
js 0x440cd2
cmp dword [ebx + 4], 0
je 0x440c60
xor edx, edx
cmp dword [ebx + 4], 2
mov edi, 0x7fff
je 0x4406b2
mov edi, 0
mov dword [esp + 0x54], 0xfffeffff
je 0x4406c4
mov dword [esp + 0x54], SysReAllocString
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov esi, 0x10000
mov dword [esp + 0x20], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0x58], ebx
mov dword [esp + 0x30], edi
jmp 0x44075e
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 8]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 4]
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0x40]
add esi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
adc edx, dword [esp + 0x4c]
cmp esi, dword [esp + 0x54]
mov eax, edx
sbb eax, edi
jae 0x440bde
mov dword [esp + 0x38], edx
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x68]
push eax
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x54]
push eax
push edx
push esi
call fcn.00440170
mov edx, dword [esp + 0x38]
cmp eax, 0xbfffffff
ja 0x440bde
mov dword [esp + 0x28], esi
test eax, eax
js 0x440740
cmp dword [esp + 0x64], 0x1000
jne 0x440740
mov eax, dword [esp + 0x60]
mov ecx, eax
or ecx, 0x66
xor eax, 0xffffff99
test ecx, eax
je 0x440740
mov esi, dword [esp + 0x40]
cmp dword [esp + 0x2c], esi
mov ecx, dword [esp + 0x44]
mov eax, 0
mov dword [esp + 0x34], ecx
sbb eax, ecx
mov ebx, dword [esp + 0x28]
jae 0x440942
mov dword [esp + 0xc], 0x20272625
mov byte [esp + 0x10], 0
xor eax, eax
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ebx + 0xc]
mov edi, eax
and edi, 0xa
mov ecx, ebx
xor ecx, 0x76c0655d
add ecx, edi
add ecx, 0x382159dc
xor ecx, edx
mov edx, ecx
and edx, 0x62
xor ecx, 0xe2
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + ebx + 0xc], cl
inc ebx
add eax, 2
cmp ebx, 5
jne 0x4407f0
mov eax, dword [0x451b2c]
test eax, eax
je 0x44087a
mov ecx, dword [esp + 0xc]
xor edx, edx
mov edi, dword [0x451b30]
nop
nop
cmp dword [edi + edx*8], 0x731cdbf3
je 0x440850
inc edx
cmp eax, edx
jne 0x440840
jmp 0x44087a
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x44087a
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x451b34]
push eax
call fcn.00442050
add esp, 0x1c
mov dword [esp + 0x3c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc], 0x20272625
mov byte [esp + 0x10], 0
xor eax, eax
xor ecx, ecx
nop
movzx edx, byte [esp + ecx + 0xc]
mov edi, eax
and edi, 0xa
mov ebx, ecx
xor ebx, 0x76c0655d
add edi, ebx
add edi, 0x382159dc
xor edi, edx
mov edx, edi
and edx, 0x62
xor edi, 0xe2
lea edx, [edi + edx*2]
inc dl
mov byte [esp + ecx + 0xc], dl
inc ecx
add eax, 2
cmp ecx, 5
jne 0x4408a0
mov eax, dword [esp + 0xc]
mov ecx, dword [0x451b2c]
test ecx, ecx
je 0x44092e
xor edx, edx
mov edi, dword [0x451b30]
nop
cmp dword [edi + edx*8], 0xf3285e74
je 0x440900
inc edx
cmp ecx, edx
jne 0x4408f0
jmp 0x44092e
mov ecx, dword [edi + edx*8 + 4]
cmp ecx, eax
je 0x44092e
push 4
push 0x3000
lea eax, [esp + 0x34]
push eax
push 0
lea eax, [esp + 0x28]
push eax
push 0xffffffffffffffff
push 6
push dword [0x451b34]
push ecx
call fcn.00442050
add esp, 0x24
test eax, eax
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x28]
js 0x440bde
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x38]
push esi
push dword [esp + 0x24]
push edx
push ebx
call fcn.00440420
test eax, eax
jns 0x44096a
cmp eax, 0x8000000d
jne 0x440740
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [ebp + 0x10]
cmp eax, edx
sbb ecx, 0
jb 0x440740
push dword [ebp + 0x14]
push edx
push dword [ebp + 0xc]
push eax
push dword [esp + 0x28]
lea eax, [esp + 0x20]
push eax
call fcn.00440d20
add esp, 0x18
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x5c], eax
cmp esi, eax
je 0x44071b
mov dword [esp + 0x68], esi
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 8]
jmp 0x4409e5
mov ebx, dword [esp + 8]
mov edi, dword [esp + 0x34]
mov dword [ecx + eax], edi
mov edi, eax
mov eax, dword [esp + 0x6c]
mov dword [ecx + edi + 4], eax
add ebx, 8
add esi, 4
cmp esi, dword [esp + 0x5c]
je 0x440b8e
mov edi, dword [esi]
sub edi, dword [esp + 0x18]
mov eax, edi
sar eax, 0x1f
add edi, edx
mov dword [esp + 0x34], edi
adc eax, dword [esp + 0x38]
mov dword [esp + 0x6c], eax
mov eax, ebx
sub eax, ecx
mov dword [esp + 8], ebx
cmp ebx, dword [esp + 0x20]
jne 0x4409c0
mov dword [esp + 4], ecx
mov dword [esp + 0x1c], eax
mov ecx, eax
sar ecx, 3
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x440a28
mov ebx, eax
lea eax, [ebx*8]
push eax
call fcn.0040cee0
add esp, 4
mov ecx, eax
mov edx, dword [esp + 4]
test edx, edx
je 0x440b76
mov dword [esp + 0x20], ebx
cmp ecx, edx
mov eax, dword [esp + 8]
mov dword [esp + 0x24], ecx
jbe 0x440b0f
cmp eax, ecx
jbe 0x440b0f
cmp dword [esp + 0x1c], 0
je 0x440b62
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x1c]
add eax, edx
dec eax
mov ecx, dword [esp + 0x24]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x440aa4
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x440a90
add eax, edx
add ecx, edx
add edx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
sub edi, dword [esp + 8]
cmp edi, 0xfffffff8
ja 0x440b62
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x440ac0
jmp 0x440b62
mov ebx, dword [esp + 0x1c]
mov ecx, ebx
shr ecx, 2
mov eax, edx
mov edi, dword [esp + 0x24]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, ebx
xor eax, 3
mov ecx, edx
mov edx, ebx
or edx, 0xfffffffc
and edx, eax
mov eax, dword [esp + 0x24]
lea edi, [eax + edx]
add edx, ecx
mov ecx, ebx
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esp + 8], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x440b62
mov eax, dword [esp + 0x1c]
and eax, 2
movzx ecx, byte [edx + eax]
mov edx, dword [esp + 8]
mov byte [edx + eax], cl
push dword [esp + 4]
call fcn.0040cef0
add esp, 4
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
lea eax, [ecx + ebx*8]
mov dword [esp + 0x20], eax
mov ebx, ecx
mov eax, dword [esp + 0x1c]
add ebx, eax
mov edx, dword [esp + 0x28]
jmp 0x4409c4
mov eax, dword [ebp + 8]
mov dword [esp + 8], ebx
mov dword [eax + 4], ebx
mov dword [eax], ecx
mov edx, dword [esp + 0x20]
mov dword [eax + 8], edx
mov eax, dword [esp + 0x68]
test eax, eax
je 0x440bd1
mov dword [esp + 4], ecx
cmp eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x30]
je 0x440740
push eax
call fcn.0040cef0
add esp, 4
mov dword [esp + 0xc], 0
jmp 0x440740
mov dword [esp + 4], ecx
mov edi, dword [esp + 0x30]
jmp 0x440740
mov dword [esp + 0xc], 0x20272625
mov byte [esp + 0x10], 0
xor eax, eax
xor ecx, ecx
nop
movzx edx, byte [esp + ecx + 0xc]
mov esi, eax
and esi, 0xa
mov edi, ecx
xor edi, 0x76c0655d
add esi, edi
add esi, 0x382159dc
xor esi, edx
mov edx, esi
and edx, 0x62
xor esi, 0xe2
lea edx, [esi + edx*2]
inc dl
mov byte [esp + ecx + 0xc], dl
inc ecx
add eax, 2
cmp ecx, 5
jne 0x440bf0
mov eax, dword [0x451b2c]
test eax, eax
je 0x440cd2
mov ecx, dword [esp + 0xc]
xor edx, edx
mov esi, dword [0x451b30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x731cdbf3
je 0x440ca8
inc edx
cmp eax, edx
jne 0x440c50
jmp 0x440cd2
push 0xf8eb88df
push dword [0x451b20]
call fcn.00444940
add esp, 8
test eax, eax
je 0x440cdf
mov ecx, dword [ebx]
test ecx, ecx
je 0x4406a0
mov dword [esp + 0xc], 0
lea edx, [esp + 0xc]
push edx
push ecx
call eax
test eax, eax
je 0x440ceb
cmp dword [esp + 0xc], 0
je 0x440ceb
mov dword [ebx + 4], 3
jmp 0x4406a0
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x440cd2
push 0x8000
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0xffffffffffffffff
push 4
push dword [0x451b34]
push eax
call fcn.00442050
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [ebx + 4], 1
jmp 0x4406a0
lea eax, [esp + 0x48]
push eax
call fcn.00445130
add esp, 4
test al, al
je 0x4406a0
mov eax, dword [esp + 0x48]
mov ecx, 2
cmp eax, 3
je 0x440d10
mov ecx, eax
mov dword [ebx + 4], ecx
jmp 0x4406a0