Function at 0x421b40
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 0x421b60
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 0x421b80
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 0x421bac
mov eax, 0xffffffff
jmp 0x421bae
add eax, eax
push eax
call fcn.0040cbb0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0xc], 0xe35ee14c
mov dword [esp + 0x10], 0xe745e57b
mov dword [esp + 0x14], 0xdb46d979
mov dword [esp + 0x18], 0xdf9bddbc
mov dword [esp + 0x1c], 0xd346d158
mov dword [esp + 0x20], 0xd748d571
mov dword [esp + 0x24], 0xcb53c95b
mov dword [esp + 0x28], 0xcf50cd53
mov dword [esp + 0x2c], 0xc371c1a0
mov dword [esp + 0x30], 0xc752c561
mov dword [esp + 0x34], 0x3ba339ac
mov dword [esp + 0x38], 0x3f993da2
mov dword [esp + 0x3c], 0x339e31a3
mov word [esp + 0x40], 0x3534
mov dword [esp + 0x42], 0
mov word [esp + 0x46], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xd8
xor cl, byte [esp + eax + 0xc]
add cl, 0xc8
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 0x3c
jne 0x421c40
movzx ecx, word [edi]
mov eax, dword [esp]
test cx, cx
je 0x421c81
add edi, 2
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x421c70
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x421cb1
lea edx, [esp + 0xe]
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 0x421ca0
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
mov dword [esp + 0x48], ebx
je 0x421ce1
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 0x421cd0
mov word [eax], 0
mov ebx, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x421cf0
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 0x421d10
mov edx, dword [esp + 0x6c]
mov esi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + edx + 2], 0
lea edx, [edx + 2]
jne 0x421d30
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x421d54
mov eax, 0xffffffff
jmp 0x421d5d
add ecx, edx
lea eax, [ecx*2 + 0x26]
mov dword [esp + 4], esi
push eax
call fcn.0040cbb0
add esp, 4
mov esi, eax
movzx eax, word [ebx]
mov dword [esp + 8], esi
test ax, ax
je 0x421d91
add ebx, 2
mov esi, dword [esp + 8]
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x421d80
mov word [esi], 0x2f
mov dword [esp + 0xc], 0xe139e7d5
mov dword [esp + 0x10], 0xfd6ee368
mov dword [esp + 0x14], 0xf908ff03
mov dword [esp + 0x18], 0xf501fb75
mov dword [esp + 0x1c], 0xf100f705
mov dword [esp + 0x20], 0x8dc3f37d
mov dword [esp + 0x24], 0x8f8c
mov edx, 0xffc57aa9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x3a8563]
mov ebx, edi
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, edi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xb3
mov byte [esp + edx + 0x3a8563], al
inc edx
cmp edx, 0xffc57ac5
jne 0x421de0
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x421e54
add ebp, 2
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 4]
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x421e40
jmp 0x421e5c
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 4]
mov word [esi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x421e93
lea ecx, [esp + 0xe]
mov ebp, dword [esp + 0x68]
nop
nop
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 0x421e80
jmp 0x421e97
mov ebp, dword [esp + 0x68]
mov word [esi], 0
movzx eax, word [edx]
test ax, ax
je 0x421ec1
add edx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edx]
add edx, 2
test ax, ax
jne 0x421eb0
mov word [esi], 0
mov dword [esp + 0xc], 0xd7d6c9fe
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 4
mov edx, ecx
xor edx, 0xce
add edx, edi
xor dl, byte [esp + ecx + 0xc]
add dl, 0xfa
mov byte [esp + ecx + 0xc], dl
inc ecx
add eax, 2
cmp ecx, 4
jne 0x421ee0
lea eax, [esp + 0xc]
push 0
push 0
push 0xc00000
push eax
mov edi, dword [esp + 0x10]
push edi
push dword [esp + 0x1c]
push dword [esp + 0x7c]
call fcn.004252c0
add esp, 0x1c
mov byte [esp + 4], al
jmp dword [0x44ac6c]