Function at 0x422380
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov eax, dword [esp + 0x7c]
mov edi, dword [eax + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4223a0
mov eax, dword [esp + 0x80]
mov esi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4223c0
sar ecx, 1
mov dword [esp + 0x50], ecx
sar eax, 1
mov dword [esp + 0x4c], eax
lea edx, [ecx + eax]
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x48], edx
jns 0x4223ee
mov eax, 0xffffffff
jmp 0x4223f5
lea eax, [edx*2 + 0x36]
push eax
call fcn.0040cbc0
add esp, 4
mov dword [esp], 0x49fe4be8
mov dword [esp + 4], 0x45db47d9
mov dword [esp + 8], 0x41d643db
mov dword [esp + 0xc], 0xbd05bf20
mov dword [esp + 0x10], 0xb936bb34
mov dword [esp + 0x14], 0xb524b723
mov dword [esp + 0x18], 0xb125b339
mov dword [esp + 0x1c], 0xad3caf21
mov dword [esp + 0x20], 0xa907abcc
mov dword [esp + 0x24], 0xa52aa733
mov dword [esp + 0x28], 0xa135a328
mov dword [esp + 0x2c], 0x9d079f32
mov dword [esp + 0x30], 0x993e9b11
mov word [esp + 0x34], 0x9798
mov dword [esp + 0x36], 0
mov word [esp + 0x3a], 0
mov ebx, 0xf3
movzx ecx, byte [esp + ebx - 0xf3]
mov edx, ebx
xor edx, ecx
or ecx, ebx
and ecx, edx
add cl, 0x41
mov byte [esp + ebx - 0xf3], cl
inc ebx
cmp ebx, 0x12f
jne 0x422480
movzx ecx, word [edi]
mov ebx, eax
test cx, cx
je 0x4224d1
add edi, 2
mov ebx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4224c0
mov word [ebx], 0
movzx ecx, word [esp]
test cx, cx
je 0x422501
lea edx, [esp + 2]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4224f0
mov word [ebx], 0
movzx ecx, word [esi]
test cx, cx
mov dword [esp + 0x58], eax
je 0x422531
add esi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x422520
mov word [ebx], 0
mov eax, dword [esp + 0x7c]
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 0x422550
mov ecx, dword [esp + 0x7c]
mov ebp, dword [ecx + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422570
mov edx, dword [esp + 0x80]
mov edi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x422590
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0x13
test eax, eax
jns 0x4225b4
mov eax, 0xffffffff
jmp 0x4225bd
add ecx, edx
lea eax, [ecx*2 + 0x26]
push eax
call fcn.0040cbc0
add esp, 4
movzx ecx, word [ebx]
mov dword [esp + 0x3c], eax
test cx, cx
je 0x4225f1
add ebx, 2
mov eax, dword [esp + 0x3c]
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 0x4225e0
mov ebx, eax
mov word [eax], 0x2f
mov dword [esp], 0xf941fbd5
mov dword [esp + 4], 0xfd6aff70
mov dword [esp + 8], 0xf160f367
mov dword [esp + 0xc], 0xf569f765
mov dword [esp + 0x10], 0xe978eb65
mov dword [esp + 0x14], 0xed3fef7d
mov word [esp + 0x18], 0xe3ec
mov dword [esp + 0x1a], 0
mov byte [esp + 0x1e], 0
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax]
mov esi, 0x7a659600
sub esi, eax
or esi, edx
not esi
mov ecx, eax
neg ecx
and ecx, edx
or ecx, esi
add ecx, 0x63fbee04
mov edx, ecx
xor edx, 0xfe
or ecx, 1
and edx, ecx
add edx, ecx
mov byte [esp + eax], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x1f
jb 0x422640
mov edx, ebx
add edx, 2
movzx eax, word [ebp]
test ax, ax
je 0x4226a2
add ebp, 2
mov word [edx], ax
add edx, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x422690
mov word [edx], 0
movzx eax, word [esp]
test ax, ax
je 0x4226d1
lea ecx, [esp + 2]
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 0x4226c0
mov word [edx], 0
movzx eax, word [edi]
test ax, ax
je 0x422701
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 0x4226f0
mov dword [esp + 0x40], edx
mov word [edx], 0
mov dword [esp], 0x106072e
xor edi, edi
mov eax, 0xe953b1c2
mov esi, 0x16ac4e3d
mov edx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x54], edx
mov dword [esp + 0x60], esi
mov dword [esp + 0x44], eax
mov ebx, edi
and ebx, 1
mov ebp, dword [esp + 0x44]
sub ebp, ebx
movzx eax, byte [esp + edi]
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x54]
or edx, 0xe953b1c1
lea ecx, [edx + ebp]
and ecx, eax
mov eax, ecx
and eax, 2
mov esi, ecx
or ecx, 2
imul ecx, eax
xor eax, 2
and esi, 0xfffffffd
imul esi, eax
add ecx, esi
mov esi, dword [esp + 0x60]
add edx, dword [esp + 0x5c]
add ebx, esi
add ebp, edx
sub ebx, edx
mov edx, dword [esp + 0x54]
and ebx, ecx
not ecx
and ecx, ebp
mov eax, dword [esp + 0x44]
sub ecx, ebx
add cl, 0x3b
mov byte [esp + edi], cl
inc edi
add eax, 2
add esi, 0xfffffffe
dec edx
cmp edi, 4
jne 0x422730
mov eax, esp
push 0
push 0
push 0xc00000
push eax
mov esi, dword [esp + 0x68]
push esi
push dword [esp + 0x50]
push dword [esp + 0x90]
call fcn.00425a40
add esp, 0x1c
mov byte [esp + 0x44], al
jmp dword [0x44dafc]