Function at 0x466a40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbf4
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, dword [ebp + 8]
call fcn.0040484c
xor eax, eax
push ebp
push 0x466e2f
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetLastError_1
push eax
or eax, 0xa9
nop
nop
nop
nop
nop
and eax, 0x96
pop eax
mov dl, 1
mov eax, dword [0x4128d0]
call fcn.004035e0
mov dword [ebp - 8], eax
push 1
call sub.gdi32.dll_AbortDoc
mov edx, esi
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
call dword [ecx + 4]
push 0x466e44
call sub.kernel32.dll_AddAtomA
push 0
push 0
mov eax, dword [ebp - 8]
call fcn.0041618c
push ecx
push edx
and edx, 0x179
add ecx, 0xaa
or ecx, 0x19d
and ecx, 0x18
or edx, 0x40
sub edx, 0x10e
push ecx
pop ecx
sub edx, 0x14f
inc ecx
mov ecx, 0xec
nop
nop
nop
nop
pop edx
pop ecx
push 1
call sub.kernel32.dll_SetLastError
push 0
push 0
mov eax, dword [ebx]
call fcn.0041618c
call sub.kernel32.dll_GetLastError_1
push eax
or eax, 0xa9
nop
nop
nop
nop
nop
and eax, 0x96
pop eax
mov ecx, dword [ebx]
mov dl, 1
mov eax, dword [0x45e1c4]
call fcn.0045e4f0
mov dword [ebp - 0xc], eax
push 1
call sub.user32.dll_GetTopWindow
push ecx
xor ecx, 0x8d
mov ecx, 0x15f
sub ecx, 0xfe
and ecx, 0x19e
and ecx, 0xa8
or ecx, 0x159
sub ecx, 0x4e
and ecx, 0x60
or ecx, 0x43
dec ecx
inc ecx
pop ecx
xor eax, eax
push ebp
push 0x466d38
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetLastError_1
push eax
or eax, 0xa9
nop
nop
nop
nop
nop
and eax, 0x96
pop eax
lea edx, [ebp - 0x40c]
mov ecx, 0x400
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov ebx, eax
push eax
push edi
and edi, 0x9d
add edi, 0xff
xor eax, 0x138
xchg edi, eax
add eax, 0x168
pop edi
pop eax
test ebx, ebx
jle 0x466c7d
push 1
call sub.kernel32.dll_ClearCommBreak
lea edx, [ebp - 0x40c]
mov ecx, ebx
mov eax, dword [ebp - 8]
call fcn.004163d0
call sub.kernel32.dll_GetLastError_1
push edx
or edx, 0x5a
inc edx
xor edx, 0xdd
xchg edx, edx
mov edx, 0x153
mov edx, 0x2f
and edx, 0x96
xor edx, 0xdb
or edx, 0x2a
add edx, 0xcf
xchg edx, edx
pop edx
push eax
or eax, 0xa9
nop
nop
nop
nop
nop
and eax, 0x96
pop eax
lea edx, [ebp - 0x40c]
mov ecx, 0x400
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov ebx, eax
push eax
push edi
and edi, 0x9d
add edi, 0xff
xor eax, 0x138
xchg edi, eax
add eax, 0x168
pop edi
pop eax
push 1
call sub.kernel32.dll_ClearCommBreak
push 0x466e50
call sub.kernel32.dll_AddAtomA
push ecx
push ebx
mov ecx, 0xbd
push ecx
pop ecx
mov ebx, 0x195
nop
nop
or ecx, 0xba
and ecx, 0x22
and ecx, 0x164
add ebx, 0x87
pop ebx
pop ecx
test ebx, ebx
jg 0x466bb1
push 1
call sub.kernel32.dll_CancelIo
push edi
inc edi
mov edi, 0x134
mov edi, 0x16
and edi, 0x28
sub edi, 0x153
mov edi, 0x136
or edi, 0xf0
mov edi, 0x194
or edi, 0x130
nop
nop
nop
nop
nop
nop
nop
pop edi
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x466d3f
push 1
call sub.kernel32.dll_CancelIo
push edi
inc edi
mov edi, 0x134
mov edi, 0x16
and edi, 0x28
sub edi, 0x153
mov edi, 0x136
or edi, 0xf0
mov edi, 0x194
or edi, 0x130
nop
nop
nop
nop
nop
nop
nop
pop edi
mov eax, dword [ebp - 0xc]
call fcn.00403610
push 0x466e50
call sub.kernel32.dll_AddAtomA
push ecx
push ebx
mov ecx, 0xbd
push ecx
pop ecx
mov ebx, 0x195
nop
nop
or ecx, 0xba
and ecx, 0x22
and ecx, 0x164
add ebx, 0x87
pop ebx
pop ecx
ret