Function at 0x420110
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x468
xor ebx, ebx
cmp byte [esp + 0x480], 0
jne 0x420412
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0x63706374
mov dword [esp + 0x14], 0x64bd6488
mov dword [esp + 0x18], 0x64be64bd
mov dword [esp + 0x1c], 0x637e6485
mov dword [esp + 0x20], 0x64e4637f
lea eax, [esp + 0x10]
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [eax]
mov esi, ebx
and esi, 0xea3ec11a
mov edx, ecx
xor edx, 0xae09f72
sub edx, esi
lea esi, [edx + 1]
and esi, edi
lea ebp, [edi + edi]
not ebp
add ebp, edi
lea edi, [edx*2 + 2]
not edi
add edx, edi
inc edx
and edx, ebp
or edx, esi
lea esi, [edx + edx]
not esi
add edx, esi
add edx, 0x468
mov word [eax], dx
add eax, 2
dec ecx
add ebx, 0xfffffffe
cmp ecx, 0xfffffff6
jne 0x420170
lea esi, [esp + 0x10]
lea ecx, [esp + 8]
push esi
call fcn.00436cc0
push 0xebc73df8
push dword [esp + 0xc]
call fcn.00438a90
add esp, 8
mov ecx, esp
push ecx
push 0x43c598
push 1
push 0
push 0x43c5a8
call eax
test eax, eax
js 0x420261
mov eax, dword [esp]
mov ecx, dword [eax]
lea edx, [esp + 4]
push edx
push 0x43c5b8
push eax
call dword [ecx]
test eax, eax
js 0x420268
mov ebx, 0xfffffffe
mov eax, dword [esp + 0x47c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [eax + ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x420220
mov ebp, dword [esp + 0x488]
mov edi, dword [ebp + 8]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x420240
sar ebx, 1
sar eax, 1
add eax, ebx
add eax, 2
mov ebp, esi
test eax, eax
jns 0x42026f
mov eax, 0xffffffff
jmp 0x420271
xor ebx, ebx
jmp 0x420412
xor ebx, ebx
jmp 0x420409
add eax, eax
push eax
call fcn.00408000
add esp, 4
mov esi, eax
movzx ecx, word [edi]
test cx, cx
je 0x4202a1
add edi, 2
mov eax, esi
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 0x420290
mov word [eax], 0x5c
add eax, 2
mov edx, dword [esp + 0x47c]
movzx ecx, word [edx]
test cx, cx
je 0x4202d1
add edx, 2
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4202c0
mov word [eax], 0
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push 0
push esi
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x420348
mov eax, dword [esp]
mov ecx, dword [eax]
push 1
push 0
push eax
call dword [ecx + 0x4c]
test eax, eax
js 0x420348
mov eax, dword [esp]
mov ecx, dword [eax]
lea edx, [esp + 0x260]
push 1
push ebp
push 0x104
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x420348
add ebx, 2
mov ebp, dword [esp + 0x488]
mov edi, dword [ebp + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x420330
sar eax, 1
add ebx, eax
jns 0x42034f
mov ebx, 0xffffffff
jmp 0x420351
xor ebx, ebx
jmp 0x4203f6
add ebx, ebx
push ebx
call fcn.00408000
add esp, 4
mov ebx, eax
movzx ecx, word [edi]
test cx, cx
je 0x420381
add edi, 2
mov eax, ebx
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 0x420370
mov word [eax], 0x2f
add eax, 2
mov edx, dword [esp + 0x47c]
movzx ecx, word [edx]
test cx, cx
je 0x4203c3
add edx, 2
lea edi, [esp + 0x260]
nop
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 0x4203b0
jmp 0x4203ca
lea edi, [esp + 0x260]
mov word [eax], 0
mov eax, dword [ebp + 0x14]
dec eax
push 1
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
push ebx
push dword [ebp]
call fcn.0041f650
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.00408010
add esp, 4
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push esi
call fcn.00408010
add esp, 4
mov eax, dword [esp]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
add esp, 0x468
pop esi
pop edi
pop ebx
pop ebp
ret 0x10