Function at 0x422cf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ebp, dword [esp + 0x6c]
mov ebx, dword [ebp + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422d10
mov eax, dword [esp + 0x70]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x422d30
sar ecx, 1
sar eax, 1
lea edx, [ecx + eax]
mov dword [esp + 0x4c], eax
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], edx
jns 0x422d5e
mov eax, 0xffffffff
jmp 0x422d65
lea eax, [edx*2 + 0x36]
push eax
call fcn.0040cd60
add esp, 4
mov dword [esp + 0x44], eax
mov dword [esp + 8], 0x21d227c0
mov dword [esp + 0xc], 0xddbf23b1
mov dword [esp + 0x10], 0xd94adf3f
mov dword [esp + 0x14], 0xd525dbf8
mov dword [esp + 0x18], 0xd15ad75c
mov dword [esp + 0x1c], 0xcd44d34f
mov dword [esp + 0x20], 0xc955cf41
mov dword [esp + 0x24], 0xc55ccb59
mov dword [esp + 0x28], 0xc12bc7e4
mov dword [esp + 0x2c], 0xfd4ec35f
mov dword [esp + 0x30], 0xf965ff70
mov dword [esp + 0x34], 0xf563fb6e
mov dword [esp + 0x38], 0xf112f779
mov word [esp + 0x3c], 0xf3f0
mov dword [esp + 0x3e], 0
mov eax, 6
mov ecx, 0xf9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x28
mov edx, ecx
and edx, 0xd7
or edx, esi
xor dl, byte [esp + ecx - 0xf1]
xor dl, 0x28
add dl, 0x23
mov byte [esp + ecx - 0xf1], dl
dec eax
inc ecx
cmp ecx, 0x133
jne 0x422e00
movzx ecx, word [ebx]
mov edx, dword [esp + 0x44]
mov eax, edx
test cx, cx
je 0x422e51
add ebx, 2
mov eax, edx
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x422e40
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x422e81
lea edx, [esp + 0xa]
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 0x422e70
mov word [eax], 0
movzx ecx, word [edi]
test cx, cx
je 0x422eb1
add edi, 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 [edi]
add edi, 2
test cx, cx
jne 0x422ea0
mov word [eax], 0
mov esi, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x422ec0
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 0x422ee0
mov edx, dword [esp + 0x70]
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 0x422f00
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x422f24
mov eax, 0xffffffff
jmp 0x422f2d
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040cd60
add esp, 4
mov ebx, eax
movzx eax, word [esi]
mov dword [esp + 4], ebx
test ax, ax
je 0x422f61
add esi, 2
mov ebx, dword [esp + 4]
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x422f50
mov word [ebx], 0x2f
mov dword [esp + 8], 0x1fdb19eb
mov dword [esp + 0xc], 0xe3561da4
mov dword [esp + 0x10], 0xe754e145
mov dword [esp + 0x14], 0xeb43e553
mov dword [esp + 0x18], 0xef5ce95b
mov dword [esp + 0x1c], 0xf301ed5b
mov word [esp + 0x20], 0xf1f0
mov dword [esp + 0x22], 0
mov word [esp + 0x26], 0
mov eax, 0xf476e3fa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xb891c0e]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x1e
mov byte [esp + eax + 0xb891c0e], cl
inc eax
cmp eax, 0xf476e41a
jne 0x422fc0
add ebx, 2
movzx eax, word [ebp]
test ax, ax
mov esi, dword [esp + 0x44]
je 0x423012
add ebp, 2
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x423000
mov word [ebx], 0
movzx eax, word [esp + 8]
test ax, ax
je 0x423043
lea ecx, [esp + 0xa]
mov ebp, dword [esp + 0x6c]
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x423030
jmp 0x423047
mov ebp, dword [esp + 0x6c]
mov word [ebx], 0
movzx eax, word [edi]
test ax, ax
je 0x423071
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x423060
mov word [ebx], 0
mov dword [esp + 8], 0x393a3b6a
xor eax, eax
mov ecx, eax
add cl, 0x8b
xor cl, byte [esp + eax + 8]
add cl, 0x49
mov byte [esp + eax + 8], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x423080
lea edi, [esp + 8]
push 0
push 0
push 0xc00000
push edi
push esi
push dword [esp + 0x18]
push dword [esp + 0x80]
call fcn.00426280
add esp, 0x1c
mov byte [esp + 3], al
jmp dword [0x44cde4]