Function at 0x408bf0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x4c8
mov eax, dword [0x431060]
xor eax, esp
mov dword [esp + 0x4c4], eax
mov eax, dword [esp + 0x4cc]
push ebx
push ebp
push esi
push edi
push 0x90
xor ebx, ebx
lea ecx, [esp + 0x30]
push ebx
push ecx
mov dword [esp + 0x30], eax
call fcn.00417ce0
add esp, 0xc
lea edx, [esp + 0x28]
push edx
mov dword [esp + 0x2c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0x38], 2
je 0x408c49
xor eax, eax
jmp 0x408ff9
push 0x3ff
lea eax, [esp + 0xd5]
push ebx
push eax
mov byte [esp + 0xdc], bl
call fcn.00417ce0
lea ecx, [esp + 0x1c]
add esp, 0xc
push ecx
lea ecx, [esp + 0xd4]
mov dword [esp + 0x14], ebx
call fcn.00407ce0
add esp, 4
mov dword [esp + 0x20], eax
cmp eax, ebx
jne 0x408ca8
lea edx, [esp + 0x10]
push edx
lea ebx, [esp + 0xd4]
call fcn.00407f70
add esp, 4
mov dword [esp + 0x20], eax
test eax, eax
je 0x408ff9
xor ebx, ebx
xor eax, eax
mov byte [esp + 0xc0], bl
mov ebx, dword [esp + 0x10]
lea edi, [esp + 0xc0]
lea ecx, [esp + 0xd0]
mov dword [esp + 0xc1], eax
mov dword [esp + 0xc5], eax
mov dword [esp + 0xc9], eax
mov word [esp + 0xcd], ax
mov byte [esp + 0xcf], al
call fcn.0040a3d0
xor edi, edi
lea esi, [esp + 0x14]
mov dword [esp + 0x14], edi
call fcn.00408300
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0xc0]
mov ebp, ebx
and ebp, 1
jne 0x408d11
add eax, ebx
jmp 0x408d13
sub eax, ebx
mov dword [esp + 0x1c], eax
mov ecx, ebx
shl ecx, 0x10
mov edx, ebx
and edx, 0xff00
add ecx, edx
mov eax, ebx
shr eax, 8
shl ecx, 8
and eax, 0xff00
add ecx, eax
mov edx, ebx
shr edx, 0x18
mov dword [esp + 0x10], edi
movzx esi, bl
lea edi, [ecx + edx]
mov al, byte [esp + 0x10]
mov edx, dword [esp + 0x1c]
add al, 2
movzx ecx, al
rol edx, cl
add edx, ebx
mov eax, edx
mov ecx, edx
and ecx, 0xff00
shl eax, 0x10
add eax, ecx
mov ecx, edx
shr ecx, 8
shl eax, 8
and ecx, 0xff00
add eax, ecx
shr edx, 0x18
add eax, edx
xor eax, 0x7ac9127b
add eax, ebx
mov ecx, esi
ror eax, cl
mov edx, eax
shl edx, 0x10
mov ecx, eax
and ecx, 0xff00
add edx, ecx
mov ecx, eax
shl edx, 8
shr ecx, 8
and ecx, 0xff00
add edx, ecx
shr eax, 0x18
add edx, eax
mov eax, dword [esp + 0x10]
xor edx, edi
inc eax
xor edx, 0x39ba2d71
cmp eax, 0x18
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], eax
jle 0x408d44
test ebp, ebp
jne 0x408dd5
mov edx, dword [esp + 0xc4]
add edx, ebx
mov dword [esp + 0x18], edx
jmp 0x408de2
mov eax, dword [esp + 0xc4]
sub eax, ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 0
mov al, byte [esp + 0x10]
mov edx, dword [esp + 0x18]
add al, 2
movzx ecx, al
rol edx, cl
add edx, ebx
mov eax, edx
mov ecx, edx
and ecx, 0xff00
shl eax, 0x10
add eax, ecx
mov ecx, edx
shr ecx, 8
shl eax, 8
and ecx, 0xff00
add eax, ecx
shr edx, 0x18
add eax, edx
xor eax, 0x7ac9127b
add eax, ebx
mov ecx, esi
ror eax, cl
mov edx, eax
shl edx, 0x10
mov ecx, eax
and ecx, 0xff00
add edx, ecx
mov ecx, eax
shl edx, 8
shr ecx, 8
and ecx, 0xff00
add edx, ecx
shr eax, 0x18
add edx, eax
mov eax, dword [esp + 0x10]
xor edx, edi
inc eax
xor edx, 0x39ba2d71
cmp eax, 0x18
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], eax
jle 0x408dea
test ebp, ebp
jne 0x408e7b
mov edx, dword [esp + 0xc8]
add edx, ebx
mov dword [esp + 0x10], edx
jmp 0x408e88
mov eax, dword [esp + 0xc8]
sub eax, ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0
mov al, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
add al, 2
movzx ecx, al
rol edx, cl
add edx, ebx
mov eax, edx
mov ecx, edx
and ecx, 0xff00
shl eax, 0x10
add eax, ecx
mov ecx, edx
shr ecx, 8
shl eax, 8
and ecx, 0xff00
add eax, ecx
shr edx, 0x18
add eax, edx
xor eax, 0x7ac9127b
add eax, ebx
mov ecx, esi
ror eax, cl
mov edx, eax
shl edx, 0x10
mov ecx, eax
and ecx, 0xff00
add edx, ecx
mov ecx, eax
shl edx, 8
shr ecx, 8
and ecx, 0xff00
add edx, ecx
shr eax, 0x18
add edx, eax
mov eax, dword [esp + 0x14]
xor edx, edi
inc eax
xor edx, 0x39ba2d71
cmp eax, 0x18
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
jle 0x408e90
test ebp, ebp
jne 0x408f1e
mov edx, dword [esp + 0xcc]
lea ebp, [edx + ebx]
jmp 0x408f27
mov ebp, dword [esp + 0xcc]
sub ebp, ebx
mov dword [esp + 0x14], 0
mov al, byte [esp + 0x14]
add al, 2
movzx ecx, al
mov edx, ebp
rol edx, cl
add edx, ebx
mov eax, edx
mov ecx, edx
and ecx, 0xff00
shl eax, 0x10
add eax, ecx
mov ecx, edx
shr ecx, 8
shl eax, 8
and ecx, 0xff00
add eax, ecx
shr edx, 0x18
add eax, edx
xor eax, 0x7ac9127b
add eax, ebx
mov ecx, esi
ror eax, cl
mov edx, eax
shl edx, 0x10
mov ecx, eax
and ecx, 0xff00
add edx, ecx
mov ecx, eax
shl edx, 8
shr ecx, 8
and ecx, 0xff00
add edx, ecx
shr eax, 0x18
add edx, eax
mov eax, dword [esp + 0x14]
xor edx, edi
inc eax
xor edx, 0x39ba2d71
cmp eax, 0x18
mov ebp, edx
mov dword [esp + 0x14], eax
jle 0x408f2f
mov edi, dword [esp + 0x24]
mov ecx, dword [edi + 0x14]
cmp ecx, 0x10
jb 0x408fc2
push 0xffffffffffffffff
push 0x10
mov ecx, edi
call fcn.00401d40
jmp 0x408fd0
mov eax, 0x10
push 0
sub eax, ecx
call fcn.00406a00
cmp dword [edi + 0x18], 0x10
jb 0x408fdb
mov eax, dword [edi + 4]
jmp 0x408fde
lea eax, [edi + 4]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov dword [eax], edx
mov edx, dword [esp + 0x10]
mov dword [eax + 4], ecx
mov dword [eax + 8], edx
mov dword [eax + 0xc], ebp
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4d4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00415dd3
add esp, 0x4c8
ret