Function at 0x420c90
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x474
xor ebx, ebx
cmp byte [esp + 0x48c], 0
jne 0x420ff0
mov esi, dword [esp + 0x494]
mov ebp, dword [esp + 0x488]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0xccb7cab6
mov dword [esp + 0x20], 0xc0fccea8
mov dword [esp + 0x24], 0xc4fdc2f3
mov dword [esp + 0x28], 0xd8bbc6a1
mov dword [esp + 0x2c], 0xdcdbdaa5
mov eax, ebx
add al, 0xc1
xor al, byte [esp + ebx + 0x1c]
add al, 0xf8
mov byte [esp + ebx + 0x1c], al
inc ebx
cmp ebx, 0x14
jne 0x420cf0
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
call fcn.00439910
push 0xebc73df8
push dword [esp + 0x18]
call fcn.0043b990
add esp, 8
lea ecx, [esp + 4]
push ecx
push 0x43f598
push 1
push 0
push 0x43f5a8
call eax
test eax, eax
js 0x420da5
mov eax, dword [esp + 4]
mov ecx, dword [eax]
lea edx, [esp + 8]
push edx
push 0x43f5b8
push eax
call dword [ecx]
test eax, eax
js 0x420dac
mov ebx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebp + ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x420d60
mov edi, dword [esi + 8]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x420d80
sar ebx, 1
sar eax, 1
inc eax
mov ecx, eax
and ecx, ebx
xor eax, ebx
lea edx, [eax + ecx*2]
inc edx
test edx, edx
jns 0x420db3
mov eax, 0xffffffff
jmp 0x420dbd
xor ebx, ebx
jmp 0x420ff0
xor ebx, ebx
jmp 0x420fe6
lea eax, [eax + ecx*2]
lea eax, [eax*2 + 2]
push eax
call fcn.00407fb0
add esp, 4
mov esi, eax
movzx ecx, word [edi]
test cx, cx
je 0x420df1
add edi, 2
mov eax, esi
nop
nop
nop
nop
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 0x420de0
mov word [esp + 0x1c], 0xf41f
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x1c]
lea edi, [ecx - 0x693bf255]
xor edi, edx
add edi, 0x49df92a7
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
mov byte [esp + ecx + 0x1c], dl
lea ecx, [ecx + ecx*2]
xor ecx, 1
cmp ecx, 2
jb 0x420e00
movzx ecx, word [esp + 0x1c]
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
test cx, cx
je 0x420e61
lea edx, [ebp + 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 0x420e50
mov word [eax], 0
mov eax, dword [esp + 8]
mov ecx, dword [eax]
push 0
push esi
push eax
call dword [ecx + 0x14]
test eax, eax
js 0x420ee2
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push 1
push 0
push eax
call dword [ecx + 0x4c]
test eax, eax
js 0x420ee2
mov eax, dword [esp + 4]
mov ecx, dword [eax]
lea edi, [esp + 0x26c]
push 1
lea edx, [esp + 0x20]
push edx
push 0x104
push edi
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x420ee2
mov eax, dword [esp + 0x494]
mov edi, dword [eax + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x420ec0
sar eax, 1
lea ecx, [ebx + eax]
add ecx, 2
test ecx, ecx
mov dword [esp + 0xc], esi
jns 0x420ee9
mov eax, 0xffffffff
jmp 0x420ef2
xor ebx, ebx
jmp 0x420fd3
add ebx, eax
lea eax, [ebx*2 + 4]
push eax
call fcn.00407fb0
add esp, 4
movzx ecx, word [edi]
mov esi, eax
test cx, cx
je 0x420f21
add edi, 2
mov esi, eax
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x420f10
mov dword [esp + 0x10], eax
mov word [esp + 2], 0x7858
xor ecx, ecx
mov dl, 1
lea ebx, [ecx + 0x7f]
lea edi, [ecx - 1]
and edi, 0x10
and ebx, 0xef
or ebx, edi
xor bl, byte [esp + ecx + 2]
add bl, 8
mov byte [esp + ecx + 2], bl
mov ecx, 1
test dl, 1
mov edx, 0
jne 0x420f30
movzx ecx, word [esp + 2]
mov word [esi], cx
add esi, 2
movzx ecx, word [ebp]
test cx, cx
je 0x420f94
add ebp, 2
lea edx, [esp + 0x26c]
nop
nop
nop
nop
nop
nop
nop
mov word [esi], cx
add esi, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x420f80
jmp 0x420f9b
lea edx, [esp + 0x26c]
mov word [esi], 0
mov ecx, dword [esp + 0x494]
mov eax, dword [ecx + 0x14]
dec eax
push 1
push eax
push dword [ecx + 0x10]
push dword [ecx + 0xc]
push edx
mov esi, dword [esp + 0x24]
push esi
push dword [ecx]
call fcn.00420050
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00407fc0
add esp, 4
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push esi
call fcn.00407fc0
add esp, 4
mov eax, dword [esp + 4]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
add esp, 0x474
pop esi
pop edi
pop ebx
pop ebp
ret 0x10