Function at 0x421c39
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 + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x54], 0x69fe6bf1
mov dword [esp + 0x58], 0x6dc96fc3
mov dword [esp + 0x5c], 0x518053ff
mov dword [esp + 0x60], 0x55ce57fb
mov dword [esp + 0x64], 0x595a5bff
mov dword [esp + 0x68], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x17
xor cl, byte [esp + eax + 0x54]
add cl, 0x8d
mov byte [esp + eax + 0x54], cl
inc eax
cmp eax, 0x18
jne case.default.0x421699
lea eax, [esp + 0x54]
lea ecx, [esp + 0x30]
push eax
call fcn.00434f70
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x442db8]
lea ecx, [esp + 0x30]
push 0x410
call fcn.00435210
not eax
shr eax, 0x1f
xor ebx, ebx
jmp dword [eax*4 + 0x442dc0]
mov dword [esp + 0x54], 0x7a0d746b
mov dword [esp + 0x58], 0x6c7e1b74
mov dword [esp + 0x5c], 0x70677d1f
mov dword [esp + 0x60], 0x56a7613
mov dword [esp + 0x64], 0x14151a0a
mov dword [esp + 0x68], 0xd68666b
mov dword [esp + 0x6c], 0x2036e06
mov dword [esp + 0x70], 0x6690079
mov dword [esp + 0x74], 0x767c767e
mov dword [esp + 0x78], 0x1e754367
mov dword [esp + 0x7c], 0xb9467f7f
mov dword [esp + 0x80], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x5a
mov edx, ecx
xor edx, 0xad
add edx, esi
xor dl, byte [esp + ecx + 0x54]
add dl, 0x9f
mov byte [esp + ecx + 0x54], dl
inc ecx
add eax, 2
cmp ecx, 0x30
jne case.default.0x421779
lea eax, [esp + 0x48]
lea ecx, [esp + 0x30]
push 0
push 0x2b
lea edx, [esp + 0x5c]
push edx
push eax
call fcn.00435b90
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
xor eax, eax
cmp ebx, ecx
sete al
jmp dword [eax*4 + 0x442dc8]
mov dword [esp + 0x44], ecx
mov eax, ecx
sub eax, ebx
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.00408160
add esp, 4
mov dword [esp + 0x2c], 0
mov ecx, dword [case.0x421779.4]
mov dword [esp + 0x10], eax
mov edi, eax
lea edx, [esp + 0x54]
jmp case.0x421779.1
add ebx, 8
mov ecx, dword [case.0x421779.4]
nop
nop
nop
jmp ecx
xor eax, eax
cmp ebx, dword [esp + 0x44]
setne al
jmp dword [eax*4 + 0x442de0]
mov dword [esp], edi
mov esi, dword [ebx]
mov dword [esp + 0x14], ebx
mov edi, dword [ebx + 4]
push 0x400
push 0
push edx
mov ebx, edx
call fcn.00408250
add esp, 0xc
lea eax, [esp + 0x20]
lea ecx, [esp + 0x30]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.00435a10
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 0x20]
or ecx, dword [esp + 0x24]
sete cl
or cl, al
movzx eax, cl
jmp dword [eax*4 + 0x442df0]
mov eax, 1
mov edi, dword [esp]
lea edx, [esp + 0x54]
mov ebx, dword [esp + 0x14]
jmp dword [eax*4 + 0x442df8]
xor eax, eax
mov edi, dword [esp]
lea edx, [esp + 0x54]
mov ebx, dword [esp + 0x14]
jmp dword [eax*4 + 0x442df8]
jmp dword [0x442e08]
mov byte [esp + 0x453], 0
movzx eax, byte [esp + 0x54]
xor esi, esi
test al, al
je 0x421860
mov ecx, edx
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x421890
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x421880
jmp 0x421860
mov esi, ecx
jmp dword [0x442e08]
xor eax, eax
test esi, esi
setne al
jmp dword [eax*4 + 0x442e10]
movzx eax, byte [esi + 1]
inc esi
mov ecx, esi
xor esi, esi
test al, al
mov dword [esp + 4], ecx
je 0x4218d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp al, 0x2e
je 0x4218cf
movzx eax, byte [ecx + 1]
inc ecx
test al, al
jne 0x4218c0
jmp 0x4218d1
mov esi, ecx
xor eax, eax
test esi, esi
setne al
jmp dword [eax*4 + 0x442e18]
mov eax, dword [case.0x421779.11]
jmp case.0x421af6.1
mov ecx, esi
sub ecx, dword [esp + 4]
lea edx, [ecx + ecx*2]
shr edx, 2
movzx eax, byte [esi - 1]
cmp eax, 0x3d
je 0x421903
cmp eax, 0x2e
jne 0x421904
dec edx
mov eax, dword [esp + 4]
movzx eax, byte [eax + ecx - 2]
cmp eax, 0x3d
mov dword [esp + 8], ecx
je 0x42191b
cmp eax, 0x2e
jne 0x42191c
dec edx
mov dword [esp + 0x40], edx
lea eax, [edx + 1]
push eax
call fcn.00408160
add esp, 4
mov dword [esp + 0x18], eax
cmp esi, dword [esp + 4]
je 0x421a3e
xor eax, eax
xor edi, edi
jmp 0x421967
mov ecx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
and eax, 4
xor edi, 4
lea edi, [edi + eax*2]
mov eax, dword [esp + 0xc]
cmp edi, ecx
jae 0x421a3e
mov dword [esp + 0x1c], eax
mov esi, dword [esp + 4]
movzx eax, byte [esi + edi]
push eax
call fcn.004187c0
add esp, 4
mov ebx, eax
movzx eax, byte [esi + edi + 1]
push eax
call fcn.004187c0
mov edx, dword [esp + 0x20]
add esp, 4
mov bh, al
lea eax, [edx + 1]
mov dword [esp + 0xc], eax
shl bl, 2
mov al, bh
shr al, 4
and al, 3
or al, bl
mov ecx, dword [esp + 0x18]
mov byte [ecx + edx], al
lea eax, [edi + 2]
mov ecx, dword [esp + 8]
cmp eax, ecx
jae 0x421950
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + eax]
push eax
call fcn.004187c0
mov ecx, dword [esp + 0xc]
add esp, 4
cmp al, 0x40
je 0x421950
mov bl, al
shl bh, 4
shr al, 2
and al, 0xf
or al, bh
mov edx, dword [esp + 0x1c]
lea esi, [edx + 2]
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x18]
mov byte [esi + edx + 1], al
lea eax, [edi + 3]
cmp eax, ecx
jae 0x421950
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + eax]
push eax
call fcn.004187c0
add esp, 4
cmp al, 0x40
je 0x421940
shl bl, 6
mov ecx, eax
and cl, bl
add cl, cl
xor bl, al
add bl, cl
mov eax, dword [esp + 0x1c]
mov byte [esi + eax + 2], bl
mov ecx, dword [esp + 0xc]
xor ecx, 1
and eax, 1
lea ecx, [ecx + eax*2]
mov dword [esp + 0xc], ecx
jmp 0x421940
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x18]
mov byte [esi + eax], 0
push esi
call fcn.00401000
add esp, 4
mov ebx, eax
jmp dword [0x442e20]
push esi
call fcn.00408170
add esp, 4
mov edi, dword [esp]
jmp dword [0x442e2c]
mov edi, dword [esp]
jmp dword [0x442e2c]
push ebx
call fcn.00401950
add esp, 4
nop
push ebx
call fcn.00401950
add esp, 4
jmp dword [0x442e30]
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x442e38]
jmp 0x421b45
mov dword [esp + 0x20], 0x13f08c83
xor esi, esi
mov edx, 0x1b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
and edi, 0x12
mov ecx, esi
and ecx, 1
or ecx, edi
xor cl, byte [esp + esi + 0x20]
xor cl, 0x56
add cl, 0xac
mov byte [esp + esi + 0x20], cl
inc esi
dec edx
cmp esi, 4
jne case.default.0x421af6
lea ecx, [esp + 0x20]
push ecx
push eax
call fcn.004018a0
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x442e40]
mov edi, dword [esp]
jmp 0x421b23
movzx ecx, byte [eax]
test cl, cl
mov edi, dword [esp]
je 0x421b1b
inc eax
nop
nop
nop
mov byte [edi], cl
inc edi
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x421b10
mov word [edi], 0x203a
add edi, 2
movzx eax, byte [esp + 0x54]
test al, al
je 0x421b3b
lea ecx, [esp + 0x55]
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421b30
mov byte [edi], 0xa
inc edi
mov al, 1
mov dword [esp + 0x2c], eax
push ebx
call fcn.00401bc0
add esp, 4
mov eax, dword [case.0x421779.11]
lea edx, [esp + 0x54]
mov ebx, dword [esp + 0x14]
nop
nop
nop
nop
nop
jmp eax
xor esi, esi
test ebx, ebx
jne 0x421d15
jmp 0x421d22
mov ebx, dword [esp + 0x2c]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x442de8]
jmp 0x421cea
jmp dword [0x442e58]
mov byte [edi], 0
mov dword [esp + 0x54], 0x7020151
mov dword [esp + 0x58], 0x33f3e35
mov dword [esp + 0x5c], 0x80c0e31
mov dword [esp + 0x60], 0x2a1a3653
mov dword [esp + 0x64], 0x3f551421
mov dword [esp + 0x68], 0x1923261b
mov dword [esp + 0x6c], 0x13165f1b
mov word [esp + 0x70], 0x75e8
mov dword [esp + 0x72], 0
mov byte [esp + 0x76], 0
mov eax, 0xe4
mov ecx, 0x1b
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x46
mov edx, eax
and edx, 0xb9
or edx, esi
xor dl, byte [esp + eax - 0x90]
xor dl, 0x46
add dl, 0x8c
mov byte [esp + eax - 0x90], dl
inc eax
dec ecx
cmp eax, 0x107
jne 0x421bf0
mov eax, edi
mov esi, dword [esp + 0x10]
sub eax, esi
lea edx, [esp + 0x54]
mov ecx, dword [ebp + 8]
push eax
push esi
push edx
call fcn.004090a0
jmp dword [0x442e60]
mov byte [edi], 0
mov dword [esp + 0x54], 0x7020151
mov dword [esp + 0x58], 0x33f3e35
mov dword [esp + 0x5c], 0x80c0e31
mov dword [esp + 0x60], 0x2a1a3653
mov dword [esp + 0x64], 0x3f551421
mov dword [esp + 0x68], 0x1923261b
mov dword [esp + 0x6c], 0x13165f1b
mov word [esp + 0x70], 0x75e8
mov dword [esp + 0x72], 0
mov byte [esp + 0x76], 0
mov eax, 0xe4
mov ecx, 0x1b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x46
mov edx, eax
and edx, 0xb9
or edx, esi
xor dl, byte [esp + eax - 0x90]
xor dl, 0x46
add dl, 0x8c
mov byte [esp + eax - 0x90], dl
inc eax
dec ecx
cmp eax, 0x107
jne 0x421ca0
mov eax, edi
mov esi, dword [esp + 0x10]
sub eax, esi
lea edx, [esp + 0x54]
mov ecx, dword [ebp + 8]
push eax
push esi
push edx
call fcn.004090a0
jmp case.0x4218d8.16
mov ebx, eax
mov eax, dword [case.0x4218d8.23]
nop
jmp eax
jmp dword [0x442e78]
push dword [esp + 0x10]
call fcn.00408170
add esp, 4
and bl, 1
mov esi, ebx
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
test ebx, ebx
je 0x421d22
cmp ebx, ecx
je 0x421d22
push ebx
call fcn.00408170
add esp, 4
mov ebx, esi
lea ecx, [esp + 0x30]
call fcn.004353a0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret