Function at 0x421fd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
mov edi, dword [eax + 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 0x421ff0
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 0x422010
mov ecx, edx
sar ecx, 1
sar ebx, 1
lea eax, [ecx + ebx]
add eax, 0x1b
test eax, eax
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], ecx
mov dword [esp + 4], ebx
jns 0x422040
mov eax, 0xffffffff
jmp 0x42204a
lea eax, [ecx + ebx]
lea eax, [eax*2 + 0x36]
push eax
call fcn.0040c9f0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0xc], 0x37e239dc
mov dword [esp + 0x10], 0x33cd35c7
mov dword [esp + 0x14], 0xcf3a31d1
mov dword [esp + 0x18], 0xcb17cdec
mov dword [esp + 0x1c], 0xc74ac940
mov dword [esp + 0x20], 0xc330c539
mov dword [esp + 0x24], 0xdf27c14f
mov dword [esp + 0x28], 0xdb28dd2f
mov dword [esp + 0x2c], 0xd739d9f8
mov dword [esp + 0x30], 0xd35ed529
mov dword [esp + 0x34], 0xef17d15c
mov dword [esp + 0x38], 0xeb11ed1e
mov dword [esp + 0x3c], 0xe702e967
mov word [esp + 0x40], 0xe5e4
mov dword [esp + 0x42], 0
mov eax, 0x7f946e76
mov ecx, 0x89
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x7f946e6a]
mov ebp, ecx
or ebp, ebx
lea edx, [ecx - 0x7f946f00]
or edx, ebx
sub edx, ebx
add edx, eax
and edx, ebp
mov bl, 0xb1
sub bl, dl
mov byte [esp + eax - 0x7f946e6a], bl
inc eax
dec ecx
cmp eax, 0x7f946eb0
jne 0x4220e0
movzx ecx, word [edi]
mov edx, dword [esp]
mov eax, edx
test cx, cx
je 0x422131
add edi, 2
mov eax, edx
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x422120
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x422161
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 0x422150
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x422191
add esi, 2
nop
nop
nop
nop
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 0x422180
mov word [eax], 0
mov eax, dword [esp + 0x68]
mov ebx, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x4221b0
mov ecx, dword [esp + 0x68]
mov ebp, dword [ecx + 8]
mov ecx, 0xfffffffe
mov edx, dword [esp + 0x6c]
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4221d0
mov esi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + edx + 2], 0
lea edx, [edx + 2]
jne 0x4221f0
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x422214
mov eax, 0xffffffff
jmp 0x42221d
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040c9f0
add esp, 4
mov edi, eax
movzx eax, word [ebx]
mov dword [esp + 8], edi
test ax, ax
je 0x422251
add ebx, 2
mov edi, dword [esp + 8]
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x422240
mov word [edi], 0x2f
mov dword [esp + 0xc], 0x934f91a7
mov dword [esp + 0x10], 0xaf22ad24
mov dword [esp + 0x14], 0xab5ca955
mov dword [esp + 0x18], 0xa75fa557
mov dword [esp + 0x1c], 0xa354a157
mov dword [esp + 0x20], 0xbf89bd4f
mov dword [esp + 0x24], 0xb9b8
mov byte [esp + 0x28], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, ecx
xor ebx, 0x8c
mov edx, eax
and edx, 0x26
sub edx, ebx
add dl, 0xe8
xor dl, byte [esp + ecx + 0xc]
add dl, 0x34
mov byte [esp + ecx + 0xc], dl
inc ecx
add eax, 2
cmp ecx, 0x1d
jne 0x4222a0
add edi, 2
movzx eax, word [ebp]
test ax, ax
je 0x4222f4
add ebp, 2
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x4222e0
jmp 0x4222f8
mov ebx, dword [esp + 4]
mov word [edi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x422323
lea ecx, [esp + 0xe]
mov ebp, dword [esp]
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422310
jmp 0x422326
mov ebp, dword [esp]
mov word [edi], 0
movzx eax, word [esi]
test ax, ax
je 0x422351
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x422340
mov word [edi], 0
mov dword [esp + 0xc], 0x292a2b0a
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb7
xor cl, byte [esp + eax + 0xc]
add cl, 0x6d
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 8
jne 0x422370
lea eax, [esp + 0xc]
push 0
push 0
push 0xc00000
push eax
push ebp
push dword [esp + 0x1c]
push dword [esp + 0x7c]
call fcn.00425690
add esp, 0x1c
mov byte [esp], al
mov esi, dword [esp + 0x6c]
jmp dword [0x44cd6c]