Function at 0x405c8d
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x34]
mov dword [eax + 0x3cc], 0xaedebcad
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x324]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp + 8]
mov ecx, dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [eax + 0x298], ecx
cmp dword [ebp - 4], 1
jne 0x40634b
mov edx, dword [ebp + 8]
cmp dword [edx + 0x2b8], 0
je 0x40634b
mov eax, dword [ebp + 8]
mov dword [eax + 0x1ec], 0
jmp 0x405d2f
add dword [eax], eax
add byte [ebx - 0x6e74f7b3], cl
or al, 3
add byte [ebx + eax*4 + 0x45], al
add dword [eax + 0x48894745], ebp
or al, 0xa8
add byte [edx - 0x75], cl
dec ebx
or byte [eax + 0x4e024d91], ch
add byte [eax + 0x518b50c2], ch
or byte [eax + 0x54025390], ch
add byte [eax + 0x5783564d], ch
in al, dx
test al, 0
pop ecx
add al, 0x5a
mov edx, dword [ecx + 0x4400030c]
add dword [ebp + 1], 0xffffffa8
inc ebp
inc edi
mov dword [eax + 0xc], ecx
test al, 0
dec edx
mov ecx, dword [ebx + 8]
test al, 0x91
dec ebp
add cl, byte [esi]
test al, 0xc2
push eax
mov edx, dword [ecx + 8]
test al, 0x90
nop
push ebx
add dl, byte [eax + eax - 0x58]
dec ebp
test al, 0x4d
push esi
adc dword [edi - 0x14], 0xffffffa8
add byte [ecx + 4], bl
pop edx
pop ebx
test al, 0x55
pop esp
mov ebx, dword [ebp + 8]
test al, 0x8a
pop edi
add esp, dword [eax]
test al, 0x48
bound esi, qword [ebx + 0x63]
mov ebp, dword [eax + 0x66826508]
add dword [eax + 0x694d6800], ebp
xor ebp, dword [eax + 0x6c016b8a]
add ch, byte [eax + 0x6f456e00]
mov ebp, dword [eax + 0x7200710c]
mov ebp, dword [eax + 0x75807408]
add ebp, dword [eax + 0x78db7700]
pop esp
test al, 2
jp 0x405d2a
jnp 0x405d08
test al, 8
jge 0x405d02
jle 0x405d85
test al, 0
or byte [ebp - 0x7f], 0x8b
test al, 0x3c
add dword [eax], 0xffffff84
mov byte [eax - 0x78a579f8], ch
jmp [eax - 0x75f77675]
mov eax, 0xb8a11155
adc dword [eax - 0x477def00], edi
adc dword [eax - 0x47b2ef00], edi
adc dword [eax - 0x47ffeef0], edi
adc dword [eax - 0x4710ee04], edi
adc dword [eax - 0x4703ee75], edi
adc dword [eax - 0x4707ee75], edi
adc dword [eax - 0x4703ee77], edi
adc dword [eax - 0x4774ee13], edi
adc dword [eax - 0x4774eeab], edi
adc dword [eax - 0x4774ef00], edi
adc dword [eax - 0x47fdee6f], edi
adc dword [eax - 0x4774eeb0], edi
adc dword [eax - 0x47fdee70], edi
adc dword [eax - 0x4774eeb3], edi
adc dword [eax - 0x47fdee7e], edi
adc dword [eax - 0x47fcee7f], edi
adc dword [eax - 0x47ffeefc], edi
adc dword [eax - 0x47efee98], edi
adc dword [eax - 0x4774eeb3], edi
adc dword [eax - 0x47adef00], edi
adc dword [eax - 0xffee50], edi
adc eax, sym.imp.KERNEL32.dll_GetLastError
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 5
jne 0x406411
push 0x45b
push 0x1000
push 0xfffa
push 0
xchg byte [edi + edi*4 - 0x797838c9], bl
pushfd
jmp 0x40642e
adc cl, ah
invalid
xchg dword [edi - 0x65b0f46a], eax
xchg dword [edi - 0x737cfbf6], eax
xchg esi, eax
or al, 0x45
lcall 0x128f, 0xd4128787
fmul qword [edi - 0x778cf7ee]
xchg dword [edi - 0x756cf63e], eax
xchg dword [edi - 0x65d2f36a], eax
xchg dword [edi - 0x78787e11], eax
xchg dword [esi - 0x38c81c64], eax
xchg dword [edx], edx
aam 0x8f
adc bl, byte [edi + ebx*4 + 0x1087c738]
sbb byte [ebx - 0x77], bl
xchg dword [edi + 0x128fcc12], eax
xchg esp, eax
mov edi, 0x1087c738
btr dword [edx - 0x740e7879], ecx
out dx, eax
xchg dword [edi - 0x23ed7879], edx
invalid