Function at 0x421620
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 + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x54], 0x179a1997
mov dword [esp + 0x58], 0x13731589
mov dword [esp + 0x5c], 0xf5c1185
mov dword [esp + 0x60], 0xb820d91
mov dword [esp + 0x64], 0x7060995
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x54]
mov edi, eax
and edi, 0xc
mov edx, ecx
xor edx, 0xa5a5406
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 0xe2
mov byte [esp + ecx + 0x54], dl
inc ecx
add eax, 2
cmp ecx, 0x14
jne case.default.0x4216c1
lea eax, [esp + 0x54]
lea ecx, [esp + 0x38]
push eax
call fcn.004355f0
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x443f64]
jmp dword [0x443f70]
lea ecx, [esp + 0x38]
push 0x410
call fcn.004358b0
nop
nop
nop
nop
lea ecx, [esp + 0x38]
push 0x410
call fcn.004358b0
jmp dword [0x443f74]
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x443f7c]
mov dword [esp + 0x54], 0x364f002d
mov dword [esp + 0x58], 0x83e5528
mov dword [esp + 0x5c], 0x3c353f59
mov dword [esp + 0x60], 0x332a3a5d
mov dword [esp + 0x64], 0x28475e32
mov dword [esp + 0x68], 0x2b4c5a45
mov dword [esp + 0x6c], 0x2e314a36
mov dword [esp + 0x70], 0xd2ab2c47
mov dword [esp + 0x74], 0xaab8c2be
mov dword [esp + 0x78], 0xdaa79db9
mov dword [esp + 0x7c], 0x6796b9b9
mov byte [esp + 0x80], 0
mov eax, 0x4454a862
mov ecx, 0x9d
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x4454a80e]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
mov esi, 0xea
sub esi, edx
add edx, 0x15
and esi, 0x97
and edx, 0x68
sub edx, esi
add dl, 0x98
mov byte [esp + eax - 0x4454a80e], dl
inc eax
dec ecx
cmp eax, 0x4454a88f
jne 0x421770
lea eax, [esp + 0x48]
lea ecx, [esp + 0x38]
push 0
push 0x2b
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.00436230
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
xor eax, eax
cmp ebx, esi
sete al
jmp dword [eax*4 + 0x443f84]
mov eax, esi
sub eax, ebx
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.004081b0
add esp, 4
mov dword [esp + 0x30], 0
xor ecx, ecx
mov dword [esp + 0x34], esi
cmp ebx, esi
setne cl
mov dword [esp + 0x20], eax
mov edi, eax
jmp dword [ecx*4 + 0x443f8c]
jmp dword [0x443f9c]
mov ebx, dword [esp + 0x30]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x443fa4]
jmp dword [0x444014]
add ebx, 8
xor eax, eax
cmp ebx, dword [esp + 0x34]
setne al
jmp dword [eax*4 + 0x443f8c]
mov dword [esp + 0x24], edi
mov esi, dword [ebx]
mov dword [esp + 0x18], ebx
mov edi, dword [ebx + 4]
push 0x400
push 0
lea ebx, [esp + 0x5c]
push ebx
call fcn.00408240
add esp, 0xc
lea eax, [esp + 0x28]
lea ecx, [esp + 0x38]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.00436080
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x28]
or ecx, dword [esp + 0x2c]
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x443fac]
mov eax, 1
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
jmp dword [eax*4 + 0x443fb4]
xor eax, eax
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x18]
jmp dword [eax*4 + 0x443fb4]
xor edi, edi
test ebx, ebx
jne 0x421d9b
jmp 0x421da8
jmp dword [0x443ff8]
cmp ebx, esi
je 0x421da8
push ebx
call fcn.004081c0
add esp, 4
mov ebx, edi
lea ecx, [esp + 0x38]
call fcn.00435a10
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret