Function at 0x422c10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x48
cmp byte [esp + 0x60], 0
je 0x422c60
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [edi + 4]
mov eax, 0xfffffffe
nop
nop
cmp word [ebp + eax + 2], 0
lea eax, [eax + 2]
jne 0x422c30
mov ecx, 0xfffffffe
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x422c40
sar eax, 1
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1f
test edx, edx
jns 0x422c67
mov eax, 0xffffffff
jmp 0x422c70
xor ebx, ebx
jmp 0x422eda
add eax, ecx
lea eax, [eax*2 + 0x3e]
push eax
call fcn.004082c0
add esp, 4
mov esi, eax
movzx ecx, word [ebp]
test cx, cx
je 0x422ca2
add ebp, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x422c90
mov word [eax], 0x5c
mov dword [esp], 0xe25de043
mov dword [esp + 4], 0xe646e47c
mov dword [esp + 8], 0xda45d846
mov dword [esp + 0xc], 0xde49dc68
mov dword [esp + 0x10], 0xd245d07e
mov dword [esp + 0x14], 0xd679d476
mov dword [esp + 0x18], 0xca57c86e
mov dword [esp + 0x1c], 0xce68cc6f
mov dword [esp + 0x20], 0xc264c047
mov dword [esp + 0x24], 0xc669c467
mov dword [esp + 0x28], 0x3aa0387b
mov dword [esp + 0x2c], 0x3e983cad
mov dword [esp + 0x30], 0x32ae307c
mov dword [esp + 0x34], 0x36a834ae
mov dword [esp + 0x38], 0x2a29289b
mov ecx, 0xa97ad957
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + ecx + 0x568526a9]
xor ebp, ecx
mov edx, ebp
and edx, 0x47
add edx, edx
xor ebp, 0xb8
sub edx, ebp
mov byte [esp + ecx + 0x568526a9], dl
inc ecx
cmp ecx, 0xa97ad993
jne 0x422d30
add eax, 2
movzx ecx, word [ebx]
test cx, cx
je 0x422d81
add ebx, 2
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 0x422d70
mov word [eax], 0
movzx ecx, word [esp]
test cx, cx
je 0x422db1
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 0x422da0
mov word [eax], 0
mov dword [esp + 0x3c], 0xaf40ad46
mov dword [esp + 0x40], 0xb31fb115
mov dword [esp + 0x44], 0xb7b6b518
xor eax, eax
movzx edx, byte [esp + eax + 0x3c]
mov ecx, eax
and ecx, 4
xor ecx, 0xad6f9134
mov ebx, eax
and ebx, 0xb
sub ebx, ecx
lea ebp, [ebx + ebx]
not ebp
add ebp, ebx
mov ecx, ebx
not ecx
or ecx, ebp
xor ecx, ebx
and ecx, edx
xor ecx, ebx
lea edx, [ecx + 0x1f]
mov ebx, 0x60
sub ebx, ecx
not ecx
and ecx, 1
and ebx, 0xa8
and edx, 0x57
or edx, ebx
xor edx, 0xa9
lea ecx, [edx + ecx*2]
mov byte [esp + eax + 0x3c], cl
inc eax
cmp eax, 0xc
jne 0x422dd0
mov dword [esp], 0xf595f3bf
mov dword [esp + 4], 0xf994f79f
mov dword [esp + 8], 0xfdd3fb69
mov dword [esp + 0xc], 0xe189ff89
mov dword [esp + 0x10], 0xe580e38c
mov dword [esp + 0x14], 0xe97fe789
mov dword [esp + 0x18], 0xedcceb79
mov dword [esp + 0x1c], 0x1171efa3
mov dword [esp + 0x20], 0x1578137b
mov word [esp + 0x24], 0x1716
mov eax, 0x4c80bee2
mov ecx, 0x1d
nop
movzx ebx, byte [esp + eax - 0x4c80bee2]
mov ebp, ecx
and ebp, 0xeb
mov edx, eax
and edx, 0x14
or edx, ebp
xor edx, eax
xor edx, 0x14
and edx, ebx
xor edx, eax
add dl, 0xf0
mov byte [esp + eax - 0x4c80bee2], dl
inc eax
dec ecx
cmp eax, 0x4c80bf08
jne 0x422e80
lea eax, [esp + 0x3c]
mov ecx, esp
push 0
push 4
push 0xc00000
push eax
push esi
push ecx
push dword [edi]
call fcn.0041eda0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.004082d0
add esp, 4
mov eax, ebx
add esp, 0x48
pop esi
pop edi
pop ebx
pop ebp
ret 0x10