Function at 0x422740
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 0x422782
int3
mov ebx, dword [esp + 0xb0]
test bl, 1
jne 0x42298a
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 0x4227c7
or byte [esp + 0x10], al
test dl, 0x40
je 0x4227d0
or byte [esp + 0x11], al
test dl, 0x20
je 0x4227d9
or byte [esp + 0x12], al
test dl, 0x10
je 0x4227ed
mov bl, byte [esp + 0x17]
mov cl, al
shl cl, 4
or bl, cl
mov byte [esp + 0x17], bl
test dl, 8
je 0x4227f6
or byte [esp + 0x16], al
test dl, 4
je 0x4227ff
or byte [esp + 0x15], al
test dl, 2
je 0x422808
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x4227b5
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 0x422825
or byte [esp + 0x10], al
test dl, 0x40
je 0x42282e
or byte [esp + 0x11], al
test dl, 0x20
je 0x422837
or byte [esp + 0x12], al
test dl, 0x10
je 0x422840
or byte [esp + 0x13], al
test dl, 8
je 0x422849
or byte [esp + 0x16], al
test dl, 4
je 0x422852
or byte [esp + 0x15], al
test dl, 2
je 0x42285b
or byte [esp + 0x14], al
inc esi
dec edi
jne 0x422813
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, 0x441538
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 + 0x4412b0]
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.00421fb0
inc ebp
add esi, 6
mov eax, dword [esp + 0x30]
mov dword [esp + 0x38], esi
dec eax
mov dword [esp + 0x30], eax
jne 0x422886
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x4229a2
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.0x4229b0.1
jmp dword [ecx*4 + 0x422bec]
mov esi, dword [esp + 0xa0]
shr eax, 3
lea edi, [esi + eax*8]
cmp esi, edi
je case.0x4229b0.1
lea edx, [esp + 0x3c]
push ebx
push edx
push esi
call fcn.00422c20
add esi, 8
cmp esi, edi
jne 0x4229cc
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.0x4229b0.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.00422c20
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 0x422a05
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.0x4229b0.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.00422c20
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 0x422a65
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.0x4229b0.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.00422230
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 0x422adc
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.0x4229b0.1
lea eax, [esp + 0x3c]
push ebx
lea ecx, [esp + 0x20]
push eax
push ecx
call fcn.00422230
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 0x422b48
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.0x4229b0.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.00422230
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 0x422b98
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret 0x14