Function at 0x422500
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov ebp, dword [esp + 0x6c]
mov edi, dword [ebp + 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 0x422520
mov eax, dword [esp + 0x70]
mov esi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x422540
sar ecx, 1
sar eax, 1
lea edx, [ecx + eax]
mov dword [esp + 0x4c], eax
add eax, ecx
add eax, 0x1b
test eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x48], edx
jns 0x42256e
mov eax, 0xffffffff
jmp 0x422575
lea eax, [edx*2 + 0x36]
push eax
call fcn.0040cdd0
add esp, 4
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0x21f22780
mov dword [esp + 0x10], 0x3d9f2391
mov dword [esp + 0x14], 0x398a3f9f
mov dword [esp + 0x18], 0x35e53bd8
mov dword [esp + 0x1c], 0x31ba37bc
mov dword [esp + 0x20], 0xd84338f
mov dword [esp + 0x24], 0x9b50f81
mov dword [esp + 0x28], 0x5bc0bb9
mov dword [esp + 0x2c], 0x1ab07e4
mov dword [esp + 0x30], 0x1d8e03bf
mov dword [esp + 0x34], 0x19a51f90
mov dword [esp + 0x38], 0x15a31bae
mov dword [esp + 0x3c], 0x11b21799
mov word [esp + 0x40], 0x1310
mov dword [esp + 0x42], 0
mov byte [esp + 0x46], 0
mov eax, 0x49
mov ecx, 0xb6
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x3d]
mov edx, ecx
xor edx, eax
and edx, ebx
xor edx, eax
add dl, 0x93
mov byte [esp + eax - 0x3d], dl
inc eax
dec ecx
cmp eax, 0x84
jne 0x422610
movzx ecx, word [edi]
mov edx, dword [esp + 8]
mov eax, edx
test cx, cx
je 0x422651
add edi, 2
mov eax, edx
mov word [eax], cx
add eax, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x422640
mov word [eax], 0
movzx ecx, word [esp + 0xc]
test cx, cx
je 0x422681
lea edx, [esp + 0xe]
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 0x422670
mov word [eax], 0
movzx ecx, word [esi]
test cx, cx
je 0x4226b1
add esi, 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 [esi]
add esi, 2
test cx, cx
jne 0x4226a0
mov word [eax], 0
mov ebx, dword [ebp]
mov eax, 0xfffffffe
nop
nop
cmp word [ebx + eax + 2], 0
lea eax, [eax + 2]
jne 0x4226c0
mov ebp, dword [ebp + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x4226e0
mov edx, dword [esp + 0x70]
mov edi, dword [edx]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x422700
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 0x42272f
mov eax, 0xffffffff
jmp 0x422731
add eax, eax
push eax
call fcn.0040cdd0
add esp, 4
mov esi, eax
movzx eax, word [ebx]
mov dword [esp + 4], esi
test ax, ax
je 0x422761
add ebx, 2
mov esi, dword [esp + 4]
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebx]
add ebx, 2
test ax, ax
jne 0x422750
mov word [esi], 0x2f
mov dword [esp + 0xc], 0xcf8bc99b
mov dword [esp + 0x10], 0xc356cd44
mov dword [esp + 0x14], 0xc754c1a5
mov dword [esp + 0x18], 0xfb63c553
mov dword [esp + 0x1c], 0xff6cf96b
mov dword [esp + 0x20], 0xf3a1fd6b
mov word [esp + 0x24], 0xf1f0
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
mov eax, 0x52
mov ecx, 0xad
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x46]
mov edx, ecx
xor edx, eax
and edx, ebx
xor edx, eax
add dl, 0x66
mov byte [esp + eax - 0x46], dl
inc eax
dec ecx
cmp eax, 0x71
jne 0x4227c0
add esi, 2
movzx eax, word [ebp]
test ax, ax
je 0x422804
add ebp, 2
mov ebx, dword [esp + 4]
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ebp]
add ebp, 2
test ax, ax
jne 0x4227f0
jmp 0x422808
mov ebx, dword [esp + 4]
mov word [esi], 0
movzx eax, word [esp + 0xc]
test ax, ax
je 0x422831
lea ecx, [esp + 0xe]
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422820
mov word [esi], 0
movzx eax, word [edi]
test ax, ax
je 0x422861
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [esi], ax
add esi, 2
movzx eax, word [edi]
add edi, 2
test ax, ax
jne 0x422850
mov word [esi], 0
mov dword [esp + 0xc], 0xc3c2c12a
mov dword [esp + 0x10], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb0
xor cl, byte [esp + eax + 0xc]
add cl, 0x90
mov byte [esp + eax + 0xc], cl
inc eax
cmp eax, 8
jne 0x422880
mov edi, dword [esp + 0x68]
mov ebp, dword [esp + 8]
jmp dword [0x44c734]