Function at 0x422830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov ebx, dword [eax + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x422850
mov esi, dword [ecx + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x422870
sar edx, 1
sar eax, 1
lea ecx, [edx + eax]
mov dword [esp + 0x50], eax
add eax, edx
add eax, 0x1b
test eax, eax
mov dword [esp + 4], edx
mov dword [esp + 0x4c], ecx
jns 0x42289e
mov eax, 0xffffffff
jmp 0x4228a5
lea eax, [ecx*2 + 0x36]
push eax
call fcn.0040c730
add esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0x21d227c0
mov dword [esp + 0x14], 0xddbf23b1
mov dword [esp + 0x18], 0xd94adf3f
mov dword [esp + 0x1c], 0xd525dbf8
mov dword [esp + 0x20], 0xd15ad75c
mov dword [esp + 0x24], 0xcd44d34f
mov dword [esp + 0x28], 0xc955cf41
mov dword [esp + 0x2c], 0xc55ccb59
mov dword [esp + 0x30], 0xc12bc7e4
mov dword [esp + 0x34], 0xfd4ec35f
mov dword [esp + 0x38], 0xf965ff70
mov dword [esp + 0x3c], 0xf563fb6e
mov dword [esp + 0x40], 0xf112f779
mov word [esp + 0x44], 0xf3f0
mov dword [esp + 0x46], 0
mov edi, 0x88220e3c
mov ecx, 0x10441c78
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi + 0x77ddf1d4]
mov ebp, ecx
and ebp, 0x4087a
mov eax, edi
xor eax, 0xc286a53d
add eax, ebp
mov ebp, edx
and ebp, eax
add ebp, ebp
sub eax, ebp
add al, dl
add al, 0xa3
mov byte [esp + edi + 0x77ddf1d4], al
inc edi
add ecx, 2
cmp edi, 0x88220e76
jne 0x422940
movzx ecx, word [ebx]
mov edx, dword [esp + 0xc]
mov eax, edx
test cx, cx
je 0x4229a1
add ebx, 2
mov eax, edx
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x422990
mov word [eax], 0
movzx ecx, word [esp + 0x10]
test cx, cx
je 0x4229d1
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 0x4229c0
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x422a01
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 0x4229f0
mov word [eax], 0
mov eax, dword [esp + 0x6c]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x422a20
mov ecx, dword [esp + 0x6c]
mov ebx, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422a40
mov edx, dword [esp + 0x70]
mov ebp, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + edx + 2], 0
lea edx, [edx + 2]
jne 0x422a60
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x422a84
mov eax, 0xffffffff
jmp 0x422a8d
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040c730
add esp, 4
mov esi, eax
movzx eax, word [edi]
mov dword [esp + 8], esi
test ax, ax
je 0x422ac1
add edi, 2
mov esi, dword [esp + 8]
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x422ab0
mov word [esi], 0x2f
mov dword [esp + 0x10], 0x21592775
mov dword [esp + 0x14], 0x5dae23a8
mov dword [esp + 0x18], 0x59c85fc3
mov dword [esp + 0x1c], 0x55c15bd5
mov dword [esp + 0x20], 0x51c057c5
mov dword [esp + 0x24], 0x4d0353dd
mov dword [esp + 0x28], 0x4f4c
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, 0x32
mov edx, ecx
xor edx, 0x39
add edx, edi
xor dl, byte [esp + ecx + 0x10]
add dl, 0xe3
mov byte [esp + ecx + 0x10], dl
inc ecx
add eax, 2
cmp ecx, 0x1c
jne 0x422b10
add esi, 2
movzx eax, word [ebx]
test ax, ax
je 0x422b51
add ebx, 2
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x422b40
mov word [esi], 0
movzx eax, word [esp + 0x10]
test ax, ax
je 0x422b81
lea ecx, [esp + 0x12]
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 0x422b70
mov word [esi], 0
movzx eax, word [ebp]
test ax, ax
je 0x422bb2
add ebp, 2
nop
nop
nop
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 0x422ba0
mov word [esi], 0
mov dword [esp + 0x10], 0xcfcec996
mov byte [esp + 0x14], 0
mov eax, 0xd1
mov ecx, 0x9866312d
nop
nop
movzx edi, byte [esp + eax - 0xc1]
lea ebx, [eax - 0x4c3318ff]
mov edx, ecx
xor edx, ebx
and edx, edi
xor edx, ebx
add dl, 0xe6
mov byte [esp + eax - 0xc1], dl
inc eax
dec ecx
cmp eax, 0xd6
jne 0x422bd0
lea eax, [esp + 0x10]
push 0
push 0
push 0xc00000
push eax
mov edi, dword [esp + 0x1c]
push edi
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x80]
call fcn.004268d0
add esp, 0x1c
mov byte [esp + 3], al
jmp dword [0x44ddac]