Function at 0x422c80
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
xor ebx, ebx
cmp byte [esp + 0x60], 0
je 0x422fae
mov eax, dword [esp + 0x68]
mov ebp, dword [esp + 0x5c]
mov edi, dword [eax + 4]
nop
cmp word [edi + ebx], 0
lea ebx, [ebx + 2]
jne 0x422ca0
lea ecx, [edi + ebx]
add ecx, 0xfffffffe
add ebx, edi
mov edx, 1
sub edx, ebx
and edx, edi
mov eax, edi
not eax
and eax, ecx
sub eax, edx
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx], 0
lea ecx, [ecx + 2]
jne 0x422cd0
sar eax, 1
lea edx, [ecx + ebp]
add edx, 0xfffffffe
add ecx, ebp
mov esi, 1
sub esi, ecx
and esi, ebp
mov ecx, ebp
not ecx
and ecx, edx
sub ecx, esi
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1f
test edx, edx
jns 0x422d09
mov eax, 0xffffffff
jmp 0x422d12
add eax, ecx
lea eax, [eax*2 + 0x3e]
push eax
call fcn.00407fa0
add esp, 4
mov esi, eax
movzx ecx, word [edi]
test cx, cx
je 0x422d41
add edi, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x422d30
mov word [eax], 0x5c
mov dword [esp], 0xe5a1e5b0
mov dword [esp + 4], 0xe5cce5c1
mov dword [esp + 8], 0xe5dde5d1
mov dword [esp + 0xc], 0xe5c7e5a1
mov dword [esp + 0x10], 0xe5c1e5d5
mov dword [esp + 0x14], 0xe5abe5d3
mov dword [esp + 0x18], 0xe5d7e5b1
mov dword [esp + 0x1c], 0xe5dee5de
mov dword [esp + 0x20], 0xe5d8e5c4
mov dword [esp + 0x24], 0xe5a3e5da
mov dword [esp + 0x28], 0xe5e8e58c
mov dword [esp + 0x2c], 0xe5e6e5f4
mov dword [esp + 0x30], 0xe5eae587
mov dword [esp + 0x34], 0xe5eae5eb
mov dword [esp + 0x38], 0xe549e594
xor ecx, ecx
nop
mov edi, ecx
xor edi, 0x72f4
lea edx, [ecx + ecx]
mov ebx, edx
and ebx, 0x16
sub ebx, edi
xor bx, word [esp + ecx*2]
add ebx, 0xffff97a0
mov word [esp + ecx*2], bx
and edx, 2
xor ecx, 1
add ecx, edx
cmp ecx, 0x1e
jb 0x422dc0
add eax, 2
movzx ecx, word [ebp]
test cx, cx
je 0x422e12
add ebp, 2
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x422e00
mov word [eax], 0
movzx ecx, word [esp]
test cx, cx
je 0x422e41
lea edx, [esp + 2]
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 0x422e30
mov word [eax], 0
mov dword [esp + 0x3c], 0x4a1b4a1e
mov dword [esp + 0x40], 0x4bda4bd3
mov dword [esp + 0x44], 0x4a794bd4
mov eax, 0xcad02cd4
mov ecx, 0x352fd32b
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [esp + eax*2 + 0x6a5fa694]
mov edi, eax
and edi, edx
mov ebx, edi
and ebx, 2
mov ebp, edi
or edi, 2
imul edi, ebx
xor ebx, 2
and ebp, 0x2cdd
imul ebp, ebx
add edi, ebp
mov ebx, edi
not ebx
and ebx, eax
and edi, ecx
sub ebx, edi
add ebx, edx
mov edx, ebx
or edx, 0x995e
and ebx, 0x995e
add edx, ebx
add edx, 2
mov word [esp + eax*2 + 0x6a5fa694], dx
inc eax
dec ecx
cmp eax, 0xcad02cda
jne 0x422e70
mov dword [esp], 0x9dc59dde
mov dword [esp + 4], 0x9dba9dbc
mov dword [esp + 8], 0x9e079db4
mov dword [esp + 0xc], 0x9e439e2e
mov dword [esp + 0x10], 0x9e389e45
mov dword [esp + 0x14], 0x9e499e42
mov dword [esp + 0x18], 0x81f09e4c
mov dword [esp + 0x1c], 0x9e339e2c
mov dword [esp + 0x20], 0x9e489e4a
mov word [esp + 0x24], 0x81d5
mov eax, esp
mov ecx, 0x1204
nop
nop
nop
nop
movzx edi, word [eax]
lea edx, [ecx - 0x5ca70000]
or edx, edi
and edi, ecx
not edx
or edx, edi
mov edi, 0xe5376fd8
sub edi, edx
or edi, 1
add edi, edx
add edi, 0x1ac89028
mov ebx, edi
and ebx, 0xfffd
mov ebp, edi
and ebp, 2
or edi, 2
imul edi, ebp
xor ebp, 2
imul ebp, ebx
lea ebx, [edx + 0x9027]
and edx, 1
and ebx, 0xfffe
or ebx, edx
add ebx, edi
add ebx, ebp
mov word [eax], bx
add eax, 2
dec ecx
cmp ecx, 0x11f1
jne 0x422f20
lea eax, [esp + 0x3c]
mov ecx, esp
push 0
push 4
push 0xc00000
push eax
push esi
push ecx
mov eax, dword [esp + 0x80]
push dword [eax]
call fcn.0041ee60
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00407fb0
add esp, 4
mov eax, ebx
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret 0x10