Function at 0x4228a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov eax, dword [esp + 0x68]
mov ebx, dword [eax + 4]
xor eax, eax
cmp word [ebx + eax], 0
lea eax, [eax + 2]
jne 0x4228b0
lea ecx, [ebx + eax]
add ecx, 0xfffffffe
add eax, ebx
mov edx, 1
sub edx, eax
and edx, ebx
mov esi, ebx
not esi
and esi, ecx
sub esi, edx
mov eax, dword [esp + 0x6c]
mov edi, dword [eax + 4]
xor eax, eax
nop
nop
nop
nop
cmp word [edi + eax], 0
lea eax, [eax + 2]
jne 0x4228e0
sar esi, 1
lea ebp, [edi + eax]
add ebp, 0xfffffffe
add eax, edi
mov edx, 1
sub edx, eax
and edx, edi
mov ecx, edi
not ecx
and ecx, ebp
sub ecx, edx
sar ecx, 1
lea eax, [esi + 0x1b]
mov edx, ecx
and edx, eax
mov dword [esp + 0x48], ecx
xor eax, ecx
lea eax, [eax + edx*2]
test eax, eax
jns 0x422922
mov eax, 0xffffffff
jmp 0x422924
add eax, eax
push eax
call fcn.0040ce80
add esp, 4
mov dword [esp + 0xc], 0x9722993c
mov dword [esp + 0x10], 0x930d9507
mov dword [esp + 0x14], 0x8f1a9131
mov dword [esp + 0x18], 0x8b378dec
mov dword [esp + 0x1c], 0x870a8900
mov dword [esp + 0x20], 0x83108519
mov dword [esp + 0x24], 0xff67810f
mov dword [esp + 0x28], 0xfb68fd6f
mov dword [esp + 0x2c], 0xf759f998
mov dword [esp + 0x30], 0xf37ef569
mov dword [esp + 0x34], 0xef77f17c
mov dword [esp + 0x38], 0xeb71ed7e
mov dword [esp + 0x3c], 0xe742e967
mov dword [esp + 0x40], 0xe5e4
mov byte [esp + 0x44], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0xa6
xor cl, byte [esp + edx + 0xc]
add cl, 0xc2
mov byte [esp + edx + 0xc], cl
inc edx
cmp edx, 0x39
jne 0x4229b0
movzx ecx, word [ebx]
mov ebp, eax
test cx, cx
je 0x4229f2
add ebx, 2
mov ebp, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], cx
add ebp, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x4229e0
mov word [ebp], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x422a22
lea edx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], cx
add ebp, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x422a10
mov word [ebp], 0
movzx ecx, word [edi]
test cx, cx
mov dword [esp + 0x4c], esi
je 0x422a52
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], cx
add ebp, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x422a40
mov dword [esp + 4], eax
mov word [ebp], 0
mov ebp, dword [esp + 0x68]
mov esi, dword [ebp]
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax], 0
lea eax, [eax + 2]
jne 0x422a70
lea ecx, [esi + eax]
add ecx, 0xfffffffe
add eax, esi
mov edx, 1
sub edx, eax
and edx, esi
mov ebx, esi
not ebx
and ebx, ecx
sub ebx, edx
mov ebp, dword [ebp + 8]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx], 0
lea ecx, [ecx + 2]
jne 0x422aa0
lea edx, [ecx + ebp]
add edx, 0xfffffffe
add ecx, ebp
mov edi, 1
sub edi, ecx
and edi, ebp
mov ecx, ebp
not ecx
and ecx, edx
sub ecx, edi
mov edx, dword [esp + 0x6c]
mov eax, dword [edx]
xor edx, edx
nop
nop
nop
nop
cmp word [eax + edx], 0
lea edx, [edx + 2]
jne 0x422ad0
sar ebx, 1
mov dword [esp + 8], ebx
sar ecx, 1
lea edi, [eax + edx]
add edi, 0xfffffffe
add edx, eax
mov ebx, 1
sub ebx, edx
and ebx, eax
mov dword [esp], eax
mov edx, eax
not edx
and edx, edi
sub edx, ebx
sar edx, 1
add ecx, dword [esp + 8]
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x422b15
mov eax, 0xffffffff
jmp 0x422b1e
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040ce80
add esp, 4
movzx ecx, word [esi]
mov edi, eax
test cx, cx
je 0x422b51
add esi, 2
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], cx
add edi, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x422b40
mov dword [esp + 8], eax
mov word [edi], 0x2f
mov dword [esp + 0xc], 0x13cf11e7
mov dword [esp + 0x10], 0xef62ed64
mov dword [esp + 0x14], 0xeb5ce955
mov dword [esp + 0x18], 0xe75fe557
mov dword [esp + 0x1c], 0xe354e157
mov dword [esp + 0x20], 0xff09fd4f
mov word [esp + 0x24], 0xf9f8
mov dword [esp + 0x26], 0
mov word [esp + 0x2a], 0
mov edx, 0x9e33747c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 0x61cc8b90]
mov eax, ecx
mov esi, ecx
xor eax, edx
lea ebx, [eax + eax]
not ebx
add ebx, eax
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
mov eax, esi
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, 0x94
mov byte [esp + edx + 0x61cc8b90], al
inc edx
cmp edx, 0x9e33749c
jne 0x422bb0
add edi, 2
movzx eax, word [ebp]
test ax, ax
je 0x422c22
add ebp, 2
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x422c10
mov word [edi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x422c53
lea ecx, [esp + 0xe]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 4]
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422c40
jmp 0x422c5b
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 4]
mov word [edi], 0
mov ecx, dword [esp]
movzx eax, word [ecx]
test ax, ax
je 0x422c81
add ecx, 2
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422c70
mov word [edi], 0
mov dword [esp + 0xc], 0x1f1e1976
mov word [esp + 0x10], 0
mov eax, 0xba
mov ecx, 0x45
nop
movzx edx, byte [esp + eax - 0xae]
mov esi, edx
not esi
or esi, ecx
or edx, eax
and edx, esi
add dl, 0x5e
mov byte [esp + eax - 0xae], dl
inc eax
dec ecx
cmp eax, 0xc0
jne 0x422ca0
lea esi, [esp + 0xc]
push 0
push 0
push 0xc00000
push esi
push ebp
push ebx
push dword [esp + 0x7c]
call fcn.00425d70
add esp, 0x1c
mov byte [esp + 4], al
jmp dword [0x44bc80]