Function at 0x4224ae
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
mov esi, esp
push eax
sub esp, 0x2c
mov edi, esp
sub esp, 0x400
mov dword [esi + 0x10], esp
sub esp, 8
mov eax, esp
and eax, 0xfffffff8
mov dword [esi + 0x6c], eax
mov esp, eax
push eax
push eax
mov eax, esp
mov dword [esi + 0x34], eax
mov dword [esi + 0x3c], eax
sub esp, 0x20
mov dword [esi + 0x38], esp
mov dword [esi + 0x64], 0
mov dword [esi + 0x60], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x40], 0x7fea79ef
mov dword [esi + 0x44], 0x63037d19
mov dword [esi + 0x48], 0x6734610d
mov dword [esi + 0x4c], 0x6bf26501
mov dword [esi + 0x50], 0x6f6e690d
mov dword [esi + 0x54], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esi + eax + 0x40]
lea ebx, [eax - 0x289a1f16]
mov ecx, 0x15
sub ecx, eax
xor ecx, ebx
and ecx, edx
xor ecx, ebx
mov edx, ecx
or edx, 0xfe
add edx, ecx
not ecx
and ecx, 1
add edx, ecx
add dl, 0x6f
mov byte [esi + eax + 0x40], dl
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
cmp eax, 0x18
jb case.default.0x422581
lea eax, [esi + 0x40]
lea ecx, [esi + 0x58]
push eax
call fcn.00435740
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x444164]
lea ecx, [esi + 0x58]
push 0x410
call fcn.00435960
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x44416c]
lea ecx, [esi + 0x58]
call fcn.00435ab0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [edi], 0x764f806d
mov dword [edi + 4], 0x887e5568
mov dword [edi + 8], 0x7c757f59
mov dword [edi + 0xc], 0x736a7a5d
mov dword [edi + 0x10], 0x68475e72
mov dword [edi + 0x14], 0x6b4c5a45
mov dword [edi + 0x18], 0x6e714a76
mov dword [edi + 0x1c], 0x526b6c47
mov dword [edi + 0x20], 0x6a78427e
mov dword [edi + 0x24], 0x5a671d79
mov dword [edi + 0x28], 0x27167979
mov dword [edi + 0x2c], 0
mov eax, 0xd00f3d82
nop
nop
nop
movzx ecx, byte [edi + eax + 0x2ff0c27e]
xor ecx, eax
add ecx, 0xefb3cc75
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [edi + eax + 0x2ff0c27e], cl
inc eax
cmp eax, 0xd00f3db2
jne 0x422610
lea ecx, [esi + 0x58]
push 0
push 0x2b
push edi
lea eax, [esi + 0x40]
push eax
call fcn.00436240
mov edi, dword [esi + 0x40]
mov ebx, dword [esi + 0x44]
xor eax, eax
cmp edi, ebx
sete al
mov dword [esi + 0x1c], ebx
jmp dword [eax*4 + 0x444174]
mov eax, ebx
sub eax, edi
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.00408630
add esp, 4
jmp dword [0x444188]
mov dword [esi + 0x30], 0
mov edx, dword [esi + 0x10]
lea ecx, [edx + 1]
mov dword [esi + 0x18], ecx
add dword [esi + 0x34], 4
xor ecx, ecx
cmp edi, ebx
setne cl
mov dword [esi + 0x2c], eax
mov dword [esi + 0x14], eax
jmp dword [ecx*4 + 0x44418c]
mov ebx, dword [esi + 0x30]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x444194]
jmp dword [0x444224]
mov edi, dword [esi + 0x20]
add edi, 8
lea eax, [edx + 1]
mov dword [esi + 0x18], eax
xor eax, eax
cmp edi, ebx
setne al
jmp dword [eax*4 + 0x44418c]
mov eax, dword [edi]
mov dword [esi + 4], eax
mov dword [esi + 0x20], edi
mov eax, dword [edi + 4]
mov dword [esi], eax
push 0x400
push 0
push edx
mov edi, edx
call fcn.004086c0
add esp, 0xc
lea ecx, [esi + 0x58]
mov ebx, dword [esi + 0x6c]
push ebx
push 0
push 0x400
push edi
push dword [esi]
push dword [esi + 4]
call fcn.004360f0
cmp eax, 0xc0000000
setae al
mov ecx, dword [ebx]
or ecx, dword [ebx + 4]
sete cl
or cl, al
movzx ecx, cl
xor eax, eax
jmp dword [ecx*4 + 0x44419c]
mov ecx, dword [case.0x422581.15]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, 1
jmp ecx
mov edx, dword [esi + 0x10]
mov ebx, dword [esi + 0x1c]
jmp dword [eax*4 + 0x4441b4]
mov byte [edx + 0x3ff], 0
movzx eax, byte [edx]
xor edi, edi
test al, al
je 0x4227a1
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x42279f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x422790
jmp 0x4227a1
mov edi, ecx
mov eax, dword [case.0x422581.24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x4441cc]
xor ebx, ebx
jmp dword [0x44422c]
mov eax, dword [esi + 0x14]
mov byte [eax], 0
mov edx, dword [esi + 0x38]
mov dword [edx], 0x656a6bc3
mov dword [edx + 4], 0x69595a67
mov dword [edx + 8], 0x64606263
mov dword [edx + 0xc], 0x6e624221
mov dword [edx + 0x10], 0x5d3b7853
mov dword [edx + 0x14], 0x7f757279
mov dword [edx + 0x18], 0x69763179
mov dword [edx + 0x1c], 0xe774
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edx + eax]
lea edx, [eax + 0x5068347f]
mov edi, 0x397cb80
sub edi, eax
and edi, 0x384c32d
and edx, 0x500800d2
or edx, edi
xor ecx, 0x83e4f72d
mov edi, ecx
and edi, edx
add edi, edi
add ecx, edx
mov edx, ecx
sub edx, edi
mov edi, edx
and edi, 0xedf6f984
xor edx, 0xedf6f984
lea edi, [edx + edi*2]
mov edx, edi
xor edx, 1
add edx, edi
and edi, 0xfe
mov ebx, edx
sub ebx, edi
and ecx, 1
and edx, ecx
xor ebx, ecx
lea ecx, [ebx + edx*2]
mov edx, dword [esi + 0x38]
mov byte [edx + eax], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x20
jb 0x422af0
mov eax, dword [esi + 0x2c]
mov edi, dword [esi + 0x14]
sub edi, eax
mov ecx, dword [ebp + 8]
push edi
push eax
push edx
call fcn.004094e0
mov ebx, eax
jmp dword [0x444224]