Function at 0x421630
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x8c
push ebx
push ebp
push esi
push edi
mov ecx, 0x17
xor eax, eax
lea edi, [esp + 0x3d]
mov byte [esp + 0x3c], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xa4]
xor esi, esi
test al, 7
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
je 0x421672
int3
mov ebx, dword [esp + 0xb0]
test bl, 1
jne 0x42187a
mov eax, dword [esp + 0xa8]
mov edi, 4
mov ecx, dword [eax]
mov edx, dword [eax + 4]
xor eax, eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dl, byte [esp + esi + 0x30]
mov al, 1
mov ecx, esi
shl al, cl
test dl, dl
jns 0x4216b7
or byte [esp + 0x10], al
test dl, 0x40
je 0x4216c0
or byte [esp + 0x11], al
test dl, 0x20
je 0x4216c9
or byte [esp + 0x12], al
test dl, 0x10
je 0x4216dd
mov bl, byte [esp + 0x17]
mov cl, al
shl cl, 4
or bl, cl
mov byte [esp + 0x17], bl
test dl, 8
je 0x4216e6
or byte [esp + 0x16], al
test dl, 4
je 0x4216ef
or byte [esp + 0x15], al
test dl, 2
je 0x4216f8
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x4216a5
mov esi, 4
mov edi, esi
mov dl, byte [esp + esi + 0x30]
mov al, 1
mov ecx, esi
shl al, cl
test dl, dl
jns 0x421715
or byte [esp + 0x10], al
test dl, 0x40
je 0x42171e
or byte [esp + 0x11], al
test dl, 0x20
je 0x421727
or byte [esp + 0x12], al
test dl, 0x10
je 0x421730
or byte [esp + 0x13], al
test dl, 8
je 0x421739
or byte [esp + 0x16], al
test dl, 4
je 0x421742
or byte [esp + 0x15], al
test dl, 2
je 0x42174b
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x421703
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
mov ebp, 0x43a2f8
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], 0x10
mov bl, dl
mov dl, byte [ebp]
mov al, byte [esp + 0x1b]
mov cl, byte [esp + 0x1a]
mov byte [esp + 0x10], dl
mov dl, byte [esp + 0x19]
mov byte [esp + 0x24], al
mov byte [esp + 0x26], dl
mov edx, dword [esp + 0x10]
and edx, 0xff
mov byte [esp + 0x25], cl
mov byte [esp + 0x27], bl
mov esi, dword [esp + 0x24]
mov eax, dword [edx*4 + 0x43a070]
mov edi, 0x1c
and esi, 0xfffffff0
sub edi, edx
mov ebx, eax
mov ecx, edi
and ebx, esi
shr ebx, cl
mov ecx, edx
shl esi, cl
or ebx, esi
mov dword [esp + 0x24], ebx
mov cl, byte [esp + 0x26]
mov byte [esp + 0x19], cl
mov cl, byte [esp + 0x25]
mov byte [esp + 0x1a], cl
mov cl, byte [esp + 0x24]
mov byte [esp + 0x1b], cl
mov cl, byte [esp + 0x2f]
mov byte [esp + 0x28], cl
mov cl, byte [esp + 0x2e]
mov byte [esp + 0x29], cl
mov cl, byte [esp + 0x2d]
mov byte [esp + 0x2a], cl
mov cl, byte [esp + 0x2c]
mov byte [esp + 0x2b], cl
mov esi, dword [esp + 0x28]
and esi, 0xfffffff0
mov ecx, edi
and eax, esi
mov bl, byte [esp + 0x27]
shr eax, cl
mov ecx, edx
mov byte [esp + 0x18], bl
shl esi, cl
or eax, esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov al, byte [esp + 0x2a]
mov cl, byte [esp + 0x29]
mov dl, byte [esp + 0x2b]
mov byte [esp + 0x2d], al
mov byte [esp + 0x2e], cl
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x18]
mov byte [esp + 0x2c], dl
mov dl, byte [esp + 0x28]
push eax
push ecx
push esi
mov byte [esp + 0x3b], dl
call fcn.00420ea0
inc ebp
add esi, 6
mov eax, dword [esp + 0x30]
mov dword [esp + 0x38], esi
dec eax
mov dword [esp + 0x30], eax
jne 0x421776
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x421892
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
mov ecx, ebx
and ecx, 0xe
cmp ecx, 0xa
ja case.0x4218a0.1
jmp dword [ecx*4 + 0x421adc]
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x4218a0.1
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
call fcn.00421b10
add esi, 8
cmp esi, edi
jne 0x4218bc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x4218a0.1
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
call fcn.00421b10
mov eax, dword [esi]
mov edx, dword [esi + 4]
xor eax, edi
xor edx, ebp
mov dword [esi], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 4], edx
add esi, 8
cmp esi, eax
jne 0x4218f5
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x4218a0.1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov ebp, dword [esi]
mov edi, dword [esi + 4]
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
call fcn.00421b10
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x10]
add esi, 8
xor ecx, eax
mov dword [esi - 8], ecx
mov ecx, dword [esp + 0x14]
xor edx, ecx
mov dword [esi - 4], edx
mov eax, dword [esi - 4]
mov edx, dword [esi - 8]
xor edi, eax
mov eax, dword [esp + 0x18]
xor ebp, edx
cmp esi, eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], edi
jne 0x421955
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x4218a0.1
mov edx, dword [esp + 0x20]
mov eax, dword [esi]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], eax
lea edx, [esp + 0x3c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esi + 4]
push ebx
lea eax, [esp + 0x14]
push edx
push eax
mov dword [esp + 0x2c], ecx
call fcn.00421120
mov eax, dword [esi]
mov ebp, dword [esi + 4]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
xor eax, ecx
xor ebp, edx
mov dword [esi], eax
mov dword [esi + 4], ebp
add esi, 8
cmp esi, edi
jne 0x4219cc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x4218a0.1
lea eax, [esp + 0x3c]
push ebx
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.00421120
mov ebp, dword [esi]
add esi, 8
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
xor ebp, edx
mov edx, dword [esi - 4]
xor edx, eax
mov dword [esi - 8], ebp
mov dword [esi - 4], edx
cmp esi, edi
jne 0x421a38
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14
mov esi, dword [esp + 0xa0]
shr eax, 3
lea eax, [esi + eax*8]
cmp esi, eax
mov dword [esp + 0x18], eax
je case.0x4218a0.1
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
lea ecx, [esp + 0x3c]
push ebx
lea edx, [esp + 0x20]
push ecx
push edx
call fcn.00421120
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x1c]
xor ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esi], ecx
mov ecx, dword [esp + 0x20]
xor edx, ecx
add edi, 1
mov dword [esi + 4], edx
mov dword [esp + 0x1c], edi
adc ebp, 0
add esi, 8
cmp esi, eax
mov dword [esp + 0x20], ebp
jne 0x421a88
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14