Function at 0x4222f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x68
mov eax, dword [esp + 0x80]
mov esi, dword [eax + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422310
mov eax, dword [esp + 0x84]
mov ebx, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x422330
sar ecx, 1
mov dword [esp + 0x54], ecx
sar eax, 1
lea edx, [ecx + eax]
mov dword [esp + 0x50], eax
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x4c], edx
jns 0x42235e
mov eax, 0xffffffff
jmp 0x422365
lea eax, [edx*2 + 0x36]
push eax
call fcn.0040cb60
add esp, 4
mov dword [esp + 0x44], eax
mov dword [esp], 0x9de0be8
mov dword [esp + 4], 0x5fb07f9
mov dword [esp + 8], 0x1f603fb
mov dword [esp + 0xc], 0x1dc51f20
mov dword [esp + 0x10], 0x19961b94
mov dword [esp + 0x14], 0x15e417e3
mov dword [esp + 0x18], 0x11e51399
mov dword [esp + 0x1c], 0x2ddc2fe1
mov dword [esp + 0x20], 0x29c72b0c
mov dword [esp + 0x24], 0x25aa27d3
mov dword [esp + 0x28], 0x21d523a8
mov dword [esp + 0x2c], 0x3dc73fd2
mov dword [esp + 0x30], 0x39de3bb1
mov word [esp + 0x34], 0x3738
mov dword [esp + 0x36], 0
mov byte [esp + 0x3a], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx]
mov edx, ecx
xor edx, 0x9b1894af
mov ebp, eax
and ebp, 0x20
sub ebp, edx
mov edx, 0x8d
sub edx, ebp
add ebp, 0x72
xor edx, ebp
and edx, edi
xor edx, ebp
add dl, 0x31
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0x3b
jne 0x422400
movzx ecx, word [esi]
mov edx, dword [esp + 0x44]
mov eax, edx
test cx, cx
je 0x422461
add esi, 2
mov eax, edx
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 0x422450
mov word [eax], 0
movzx ecx, word [esp]
test cx, cx
je 0x422491
lea edx, [esp + 2]
nop
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 0x422480
mov word [eax], 0
movzx ecx, word [ebx]
test cx, cx
je 0x4224c1
add ebx, 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 [ebx]
add ebx, 2
test cx, cx
jne 0x4224b0
mov word [eax], 0
mov eax, dword [esp + 0x80]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4224e0
mov ecx, dword [esp + 0x80]
mov esi, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [esi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422500
mov edx, dword [esp + 0x84]
mov ebx, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + edx + 2], 0
lea edx, [edx + 2]
jne 0x422520
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xd
mov ecx, eax
and ecx, 6
xor eax, 6
lea eax, [eax + ecx*2]
test eax, eax
jns 0x42254f
mov eax, 0xffffffff
jmp 0x422551
add eax, eax
mov dword [esp + 0x3c], ebx
push eax
call fcn.0040cb60
add esp, 4
movzx ecx, word [edi]
mov dword [esp + 0x40], eax
test cx, cx
je 0x422591
add edi, 2
mov eax, dword [esp + 0x40]
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 0x422580
mov ebp, eax
mov word [eax], 0x2f
mov dword [esp], 0x11d91fcd
mov dword [esp + 4], 0x15861398
mov dword [esp + 8], 0x98817f3
mov dword [esp + 0xc], 0xd910b9d
mov dword [esp + 0x10], 0x1900f9d
mov dword [esp + 0x14], 0x5d30395
mov dword [esp + 0x18], 0x704
mov byte [esp + 0x1c], 0
mov ebx, 5
mov ecx, 0x3a
nop
nop
mov edi, ecx
and edi, 0x10
mov edx, ecx
not edx
mov eax, ebx
and eax, 0x2f
or eax, edi
and edx, 0x2f
or edx, eax
xor dl, byte [esp + ebx - 5]
xor dl, 0xd0
add dl, 0x27
mov byte [esp + ebx - 5], dl
inc ebx
dec ecx
cmp ebx, 0x22
jne 0x4225e0
mov edx, ebp
add edx, 2
movzx eax, word [esi]
test ax, ax
mov edi, dword [esp + 0x3c]
je 0x422631
add esi, 2
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [esi]
add esi, 2
test ax, ax
jne 0x422620
mov word [edx], 0
movzx eax, word [esp]
test ax, ax
je 0x422661
lea ecx, [esp + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422650
mov word [edx], 0
movzx eax, word [edi]
test ax, ax
je 0x422691
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x422680
mov dword [esp + 0x48], edx
mov word [edx], 0
mov dword [esp], 0x7f7e7956
mov word [esp + 4], 0
mov eax, 0x4f694695
mov ecx, 0x3096b96b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x3096b96b]
lea esi, [ecx - 1]
mov ebx, edx
or ebx, eax
add ebx, ecx
add ebx, ebx
lea edi, [eax - 0x4f694600]
and edi, ebx
not ebx
and ebx, esi
sub ebx, edi
add bl, dl
add bl, 0xee
mov byte [esp + ecx - 0x3096b96b], bl
dec eax
inc ecx
cmp ecx, 0x3096b971
jne 0x4226c0
mov eax, esp
push 0
push 0
push 0xc00000
push eax
mov esi, dword [esp + 0x54]
push esi
push dword [esp + 0x54]
push dword [esp + 0x94]
call fcn.004259d0
add esp, 0x1c
mov byte [esp + 0x3c], al
jmp dword [0x44db78]