Function at 0x421e69
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov ecx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x68]
mov edi, dword [ebp + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x421e10
mov esi, dword [ecx + 4]
mov ebx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
cmp word [esi + ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x421e30
sar edx, 1
sar ebx, 1
lea eax, [edx + 0x1b]
mov ecx, ebx
and ecx, eax
xor eax, ebx
lea eax, [eax + ecx*2]
test eax, eax
mov dword [esp + 0x4c], edx
jns 0x421e5c
mov eax, 0xffffffff
jmp 0x421e5e
add eax, eax
push eax
call fcn.0040ca00
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x10], 0x19ce1bb8
mov dword [esp + 0x14], 0xe54be7a9
mov dword [esp + 0x18], 0xe156e34b
mov dword [esp + 0x1c], 0xed25ef00
mov dword [esp + 0x20], 0xe956eb54
mov dword [esp + 0x24], 0xf544f743
mov dword [esp + 0x28], 0xf145f349
mov dword [esp + 0x2c], 0xfd4cff41
mov dword [esp + 0x30], 0xf927fb1c
mov dword [esp + 0x34], 0xc57ac753
mov dword [esp + 0x38], 0xc175c378
mov dword [esp + 0x3c], 0xcd67cf72
mov dword [esp + 0x40], 0xc96ecb71
mov word [esp + 0x44], 0xd7c8
mov dword [esp + 0x46], 0
mov byte [esp + 0x4a], 0
mov eax, 0x967425fb
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x698bda15]
xor ecx, eax
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0x18
mov byte [esp + eax + 0x698bda15], cl
inc eax
cmp eax, 0x96742636
jne 0x421ef0
movzx ecx, word [edi]
mov eax, dword [esp + 4]
test cx, cx
je 0x421f41
add edi, 2
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x421f30
mov word [eax], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x421f71
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x421f60
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
mov dword [esp + 8], ebx
je 0x421fa1
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x421f90
mov word [eax], 0
mov ebx, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x421fb0
mov ebp, dword [ebp + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x421fd0
mov edx, dword [esp + 0x6c]
mov edi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x421ff0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x422014
mov eax, 0xffffffff
jmp 0x42201d
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040ca00
add esp, 4
mov esi, eax
movzx eax, word [ebx]
mov dword [esp + 0xc], esi
test ax, ax
je 0x422051
add ebx, 2
mov esi, dword [esp + 0xc]
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x422040
mov word [esi], 0x2f
mov dword [esp + 0x10], 0x59815b75
mov dword [esp + 0x14], 0x5daa5fd0
mov dword [esp + 0x18], 0x51a053a7
mov dword [esp + 0x1c], 0x55a957a5
mov dword [esp + 0x20], 0x69986ba5
mov dword [esp + 0x24], 0x6d5f6f9d
mov word [esp + 0x28], 0x636c
mov dword [esp + 0x2a], 0
mov byte [esp + 0x2e], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0x8f
xor cl, byte [esp + eax + 0x10]
add cl, 0x35
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x1f
jne 0x4220a0
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x4220e2
add ebp, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x4220d0
mov word [esi], 0
movzx eax, word [esp + 0x10]
test ax, ax
je 0x422111
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422100
mov word [esi], 0
movzx eax, word [edi]
test ax, ax
je 0x422141
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x422130
mov word [esi], 0
mov dword [esp + 0x10], 0x9796994e
mov dword [esp + 0x14], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x10]
lea edx, [eax + 0x61672ae6]
mov edi, 0x1e98d519
sub edi, eax
mov ebx, edi
and ebx, 0xa
and edx, 0x406228c5
or edx, ebx
xor edx, ecx
xor edx, 0x2105022a
or edx, edi
add ecx, eax
lea edi, [ecx + edx*2]
lea ecx, [ecx + edx*2]
add ecx, 0x7a635469
mov edx, ecx
xor edx, 0xfe
mov ebx, ecx
or ebx, 1
and ebx, edx
mov edx, ecx
and edx, 0xfe
xor ecx, 1
add ecx, edi
add ecx, 0x7a635469
sub ecx, edx
add ecx, ebx
mov byte [esp + eax + 0x10], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x422160
lea eax, [esp + 0x10]
push 0
push 0
push 0xc00000
push eax
mov edi, dword [esp + 0x14]
push edi
push dword [esp + 0x20]
push dword [esp + 0x7c]
call fcn.00425430
add esp, 0x1c
mov ebx, eax
jmp dword [0x44ca40]