Function at 0x4222a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x468
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x60], 0x63f661f3
mov dword [esp + 0x64], 0x67c765c1
mov dword [esp + 0x68], 0x6b0469c5
mov dword [esp + 0x6c], 0x6ff66dc9
mov dword [esp + 0x70], 0x535251f5
mov dword [esp + 0x74], 0
mov byte [esp + 0x78], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0x18
ja 0x42234f
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x60]
lea edx, [eax + 0x244212d0]
add eax, 0xd0
or eax, edx
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x28]
add al, 0x50
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x60], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0x19
jb 0x422310
lea edi, [esp + 0x60]
lea ecx, [esp + 0x4c]
push edi
call fcn.00437de0
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4446e0]
lea ecx, [esp + 0x4c]
push 0x410
call fcn.00438040
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x4446e8]
jmp dword [0x4447d4]
mov dword [esp + 0x60], 0x2a733815
mov dword [esp + 0x64], 0x202a0d10
mov dword [esp + 0x68], 0xc353311
mov dword [esp + 0x6c], 0x73e3615
mov dword [esp + 0x70], 0x301b6216
mov dword [esp + 0x74], 0x3f1c661d
mov dword [esp + 0x78], 0x2395e3a
mov dword [esp + 0x7c], 0x65f0423
mov dword [esp + 0x80], 0x56202622
mov dword [esp + 0x84], 0xe534521
mov dword [esp + 0x88], 0x8b5a3131
mov dword [esp + 0x90], 0
mov dword [esp + 0x8c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x33
ja 0x422458
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x60]
add eax, 0xdf3aa548
xor eax, ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov ecx, eax
or ecx, 7
and eax, 7
add eax, ecx
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x60], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x34
jb 0x422420
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x4c]
push 0
push 0x2b
push edi
push eax
call fcn.004385d0
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
xor eax, eax
cmp esi, ebx
sete al
jmp dword [eax*4 + 0x4446f0]
mov eax, ebx
sub eax, esi
sar eax, 2
imul eax, eax, 0x421
push eax
call fcn.00409200
add esp, 4
mov dword [esp + 0x40], 0
xor ecx, ecx
mov dword [esp + 0x5c], ebx
cmp esi, ebx
setne cl
mov dword [esp + 0x3c], eax
mov ebx, eax
jmp dword [ecx*4 + 0x4446f8]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], esi
mov esi, dword [esi]
push 0x400
push 0
push edi
call fcn.00409280
add esp, 0xc
lea eax, [esp + 0x28]
lea ecx, [esp + 0x4c]
push eax
push 0x400
push edi
push esi
call fcn.00438460
xor ecx, ecx
cmp eax, 0xc0000000
setae cl
xor eax, eax
jmp dword [ecx*4 + 0x444700]
xor ecx, ecx
cmp dword [esp + 0x28], 0
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x444708]
mov ecx, dword [case.0x42247a.5]
nop
nop
nop
nop
nop
mov eax, 1
jmp ecx
mov ecx, dword [case.0x42247a.14]
nop
nop
nop
jmp ecx
mov esi, dword [esp + 0x14]
jmp dword [eax*4 + 0x444730]
mov byte [esp + 0x45f], 0
movzx eax, byte [esp + 0x60]
xor edx, edx
test al, al
je 0x422571
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x42256f
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x422560
jmp 0x422571
mov edx, ecx
xor eax, eax
test edx, edx
setne al
jmp dword [eax*4 + 0x444738]
jmp dword [0x444744]
xor ecx, ecx
test ebx, ebx
setne cl
jmp dword [ecx*4 + 0x444750]
mov dword [esp + 4], ebx
mov ecx, ebx
sub ecx, edx
mov edi, edx
mov edx, ecx
and edx, 3
mov ebx, ecx
or ebx, 3
imul ebx, edx
xor edx, 3
mov esi, ecx
and esi, 0xfffffffc
imul esi, edx
add ebx, esi
shr ebx, 2
cmp byte [eax + ecx], 0x3d
je 0x4225df
mov eax, ecx
xor eax, 0xfffffffe
mov edx, ecx
and edx, 0xfffffffe
lea eax, [eax + edx*2]
cmp byte [edi + eax + 1], 0x2e
jne 0x4225e0
dec ebx
mov esi, edi
movzx eax, byte [ecx + edi - 2]
cmp eax, 0x3d
je 0x4225f1
cmp eax, 0x2e
jne 0x4225f2
dec ebx
mov dword [esp + 0x58], ebx
lea eax, [ebx + 1]
push eax
call fcn.00409200
add esp, 4
mov dword [esp + 0x18], eax
mov edx, dword [esp + 4]
mov eax, edx
not eax
mov ecx, esi
and eax, esi
not esi
and esi, edx
mov edx, esi
sub edx, eax
jne 0x422683
mov eax, dword [esp + 0x58]
mov esi, dword [esp + 0x18]
mov byte [esi + eax], 0
push esi
call fcn.00401f10
add esp, 4
mov ebx, eax
jmp dword [0x444758]
jmp dword [0x444760]
push esi
call fcn.00409210
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
push esi
call fcn.00409210
add esp, 4
jmp dword [0x444768]
push ebx
call fcn.004029f0
add esp, 4
xor ecx, ecx
test eax, eax
setne cl
lea edi, [esp + 0x60]
jmp dword [ecx*4 + 0x444770]
mov esi, dword [esp + 0x14]
jmp 0x422879
xor edi, edi
mov esi, 2
mov dword [esp + 0x10], edx
mov dword [esp + 0x48], ecx
jmp 0x4226b8
mov ecx, dword [esp + 0x48]
lea eax, [esi + 4]
add esi, 2
mov edi, dword [esp + 4]
cmp esi, edx
mov esi, eax
jae 0x42261c
movzx eax, byte [ecx + esi - 2]
push eax
mov ebx, ecx
call fcn.004191d0
add esp, 4
mov byte [esp + 4], al
movzx eax, byte [ebx + esi - 1]
push eax
call fcn.004191d0
mov edx, dword [esp + 0x14]
add esp, 4
mov bh, al
movzx ecx, byte [esp + 4]
shl cl, 2
mov al, bh
shr al, 4
and al, 3
or al, cl
mov ecx, dword [esp + 0x18]
mov byte [ecx + edi], al
lea eax, [edi + 1]
cmp esi, edx
mov dword [esp + 4], eax
jae 0x4226a0
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x48]
movzx eax, byte [edi + esi]
push eax
call fcn.004191d0
mov edx, dword [esp + 0x14]
add esp, 4
cmp al, 0x40
mov ecx, edi
je 0x4226a4
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
mov edi, dword [esp + 0x44]
lea edx, [edi + 2]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x18]
mov byte [edx + edi + 1], al
mov edx, dword [esp + 0x10]
lea eax, [esi + 1]
cmp eax, edx
jae 0x4226a4
movzx eax, byte [ecx + esi + 1]
push eax
mov edi, ecx
call fcn.004191d0
mov edx, dword [esp + 0x14]
mov ecx, edi
add esp, 4
cmp al, 0x40
je 0x4226a4
shl bl, 6
add al, bl
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x44]
mov byte [edx + edi + 2], al
mov edx, dword [esp + 0x10]
add edi, 3
mov dword [esp + 4], edi
jmp 0x4226a4
mov dword [esp + 0x28], 0x63c0f4f3
lea ecx, [esp + 0x2c]
mov byte [ecx + 8], 0
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0xc
ja 0x4227fc
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x28]
lea esi, [ecx + 0x10]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0xe79f9110
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0x90
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x28], cl
inc dword [esp + 8]
mov ecx, dword [esp + 8]
cmp ecx, 0xd
jb 0x4227c0
lea ecx, [esp + 0x28]
push ecx
push eax
call fcn.00402790
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x444778]
mov edx, dword [esp + 0xc]
jmp 0x422849
movzx ecx, byte [eax]
test cl, cl
je 0x42283d
inc eax
mov edx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
mov byte [edx], cl
inc edx
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x422830
jmp 0x422841
mov edx, dword [esp + 0xc]
mov word [edx], 0x203a
add edx, 2
mov esi, dword [esp + 0x14]
movzx eax, byte [esp + 0x60]
test al, al
je 0x42286b
lea ecx, [esp + 0x61]
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x422860
mov byte [edx], 0xa
inc edx
mov dword [esp + 0xc], edx
mov al, 1
mov dword [esp + 0x40], eax
push ebx
call fcn.00402fc0
add esp, 4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [case.0x422811.5]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
jmp dword [0x4447a0]
add esi, 4
mov eax, dword [case.0x422578.32]
mov ebx, dword [esp + 0xc]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp esi, dword [esp + 0x5c]
setne al
jmp dword [eax*4 + 0x4446f8]
inc edx
mov eax, edx
inc edx
movzx ecx, byte [eax + 1]
xor ebx, ebx
test cl, cl
je 0x422924
mov ebx, edi
mov edi, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp cl, 0x2e
je 0x42292a
movzx ecx, byte [edx + 1]
inc edx
test cl, cl
jne 0x422910
mov edx, edi
mov edi, ebx
xor ebx, ebx
jmp dword [0x44474c]
mov ecx, edx
mov edx, edi
mov edi, ebx
mov ebx, ecx
jmp dword [0x44474c]
xor edi, edi
test esi, esi
jne 0x422a51
jmp 0x422a66
mov ecx, dword [esp + 0x40]
mov eax, ecx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x4447c0]
mov edi, dword [esp + 0x3c]
mov ebx, ecx
jmp dword [0x4447c8]
mov ecx, dword [ebp + 8]
mov byte [ebx], 0
mov edi, dword [esp + 0x3c]
sub ebx, edi
mov dword [esp + 0x60], 0x8f8a8959
mov dword [esp + 0x64], 0x9b77768d
mov dword [esp + 0x68], 0x80848689
mov dword [esp + 0x6c], 0x92827e5b
mov dword [esp + 0x70], 0x675d9c69
mov dword [esp + 0x74], 0x919b9e93
mov dword [esp + 0x78], 0x8b8e5793
mov word [esp + 0x7c], 0x3db0
mov dword [esp + 0x82], 0
mov dword [esp + 0x7e], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x25
ja 0x422a23
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x60]
lea esi, [eax + edx]
add esi, 0xdaacc804
add eax, 4
and eax, edx
add eax, eax
mov edx, eax
xor edx, esi
not eax
and eax, esi
add eax, eax
sub eax, edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
add al, 0xe4
mov edx, dword [esp]
mov byte [esp + edx + 0x60], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x26
jb 0x4229e0
lea eax, [esp + 0x60]
push ebx
push edi
push eax
call fcn.00409c00
mov ebx, eax
jmp dword [0x4447c8]
push edi
call fcn.00409210
add esp, 4
and bl, 1
mov edi, ebx
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
test esi, esi
je 0x422a66
cmp esi, ebx
je 0x422a66
push esi
call fcn.00409210
add esp, 4
mov ebx, edi
jmp dword [0x4447d4]
mov ebx, edi
jmp dword [0x4447d4]
lea ecx, [esp + 0x4c]
call fcn.00438180
lea ecx, [esp + 0x4c]
call fcn.00438180
jmp dword [0x4447d8]
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
cmp dword [esp + 4], 0
sete bl
jmp dword [ebx*4 + 0x444860]
mov dword [esp + 0x38], 0xa3d2a1c2
mov dword [esp + 0x3c], 0xdfa5dddd
mov dword [esp + 0x40], 0xdbb5d9a5
mov dword [esp + 0x44], 0xd7a6d5b6
mov dword [esp + 0x48], 0xd3b4d1bd
mov dword [esp + 0x4c], 0xcf8fcda5
mov dword [esp + 0x50], 0xcbb0c9b3
mov dword [esp + 0x54], 0xc7b2c5b1
mov dword [esp + 0x58], 0xc3a4c1b9
mov dword [esp + 0x5c], 0xff8dfdaf
mov dword [esp + 0x60], 0xfb94f980
mov dword [esp + 0x64], 0xf7b7f593
mov dword [esp + 0x68], 0xf38ff184
mov dword [esp + 0x6c], 0xef82ed96
mov dword [esp + 0x70], 0xeb7ce98d
mov dword [esp + 0x74], 0xe77be564
mov dword [esp + 0x78], 0xe38de182
mov dword [esp + 0x7c], 0x1f831d6e
mov dword [esp + 0x80], 0x1b8f197d
mov word [esp + 0x84], 0x151a
mov dword [esp + 0x8a], 0
mov dword [esp + 0x86], 0
mov dword [esp + 0xa0], 0
mov eax, dword [esp + 0xa0]
cmp eax, 0x55
ja 0x422d56
nop
nop
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa0]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax - 0xd31eec5]
and edx, ecx
add eax, ecx
add eax, 0xf2ce113b
add edx, edx
sub eax, edx
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xdc]
add al, 0x63
mov ecx, dword [esp + 0xa0]
mov byte [esp + ecx + 0x38], al
mov eax, dword [esp + 0xa0]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xa0]
cmp eax, 0x56
jb 0x422cf0
jmp dword [0x4447e8]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x38]
push 0
push 0
push esi
push eax
push ecx
call fcn.0043c680
add esp, 0x14
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [esp + 0x14]
lea edi, [esp + 0x38]
push 0
push 0
push esi
push eax
push edi
call fcn.0043c680
add esp, 0x14
jmp dword [0x4447f4]