Function at 0xa591178
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
xor ebx, ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.0a534c58
xor eax, eax
push ebp
push 0xa591457
push dword fs:[eax]
mov dword fs:[eax], esp
push 1
call sub.gdi32.dll_AbortDoc
push edx
push esi
and esi, 0xe5
xor edx, 0x21
add esi, 0x170
xchg esi, esi
sub esi, 0x164
nop
nop
or esi, 0x68
sub edx, 0x122
mov edx, 0x47
dec edx
push edx
pop edx
xchg esi, edx
xchg esi, esi
dec esi
pop esi
pop edx
lea eax, [ebp - 0x10]
call fcn.0a5347a4
push 1
call sub.user32.dll_GetWindowTextLengthA
push ecx
push ecx
pop ecx
and ecx, 0x15e
and ecx, 0x110
inc ecx
nop
nop
and ecx, 0x1a9
and ecx, 0x6e
add ecx, 0xe0
pop ecx
mov dl, 1
mov eax, dword [0xa542544]
call fcn.0a533960
mov dword [ebp - 0x1c], eax
push 1
call sub.gdi32.dll_GetStockObject
push ecx
push eax
and eax, 0x21
inc ecx
nop
nop
nop
push eax
pop eax
inc ecx
or ecx, 0xc
dec ecx
pop eax
pop ecx
mov dl, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.0a545dac
push ebx
push edx
xor edx, 0x12c
xchg ebx, ebx
or edx, 0x102
xor edx, 0x5e
inc ebx
inc ebx
xchg ebx, ebx
sub edx, 0xa5
push edx
pop edx
pop edx
pop ebx
call sub.kernel32.dll_GetTickCount
push ebx
push edi
xor ebx, 0x36
sub edi, 0x172
nop
nop
nop
nop
pop edi
pop ebx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.0a545b94
push 1
call sub.gdi32.dll_GetStockObject
push ecx
push eax
and eax, 0x21
inc ecx
nop
nop
nop
push eax
pop eax
inc ecx
or ecx, 0xc
dec ecx
pop eax
pop ecx
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0xa5913e7
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
push 1
call sub.user32.dll_EnumClipboardFormats
push edi
push edx
push edi
pop edi
add edx, 0x7b
mov edi, 0x92
xchg edi, edi
sub edi, 0xfe
or edx, 0x161
sub edi, 0x16f
sub edx, 0xd8
pop edx
pop edi
lea ecx, [ebp - 0x28]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x1c]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x28]
call fcn.0a538978
mov dword [ebp - 0x18], eax
push ebx
push edx
push ebx
pop ebx
mov edx, 0x99
inc ebx
add ebx, 0x128
pop edx
pop ebx
call sub.user32.dll_GetKBCodePage
push edi
and edi, 0x12f
inc edi
nop
nop
nop
nop
xor edi, 0x16f
mov edi, 3
or edi, 0xba
and edi, 0xfe
nop
nop
nop
xchg edi, edi
mov edi, 0x165
inc edi
sub edi, 0x39
dec edi
pop edi
lea eax, [ebp - 0x2c]
mov dl, byte [ebp - 0x18]
add dl, byte [ebp - 8]
call fcn.0a53498c
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.0a534a70
call sub.user32.dll_DestroyCaret
push edi
push ecx
dec ecx
push ecx
pop ecx
xor ecx, 0xdf
add edi, 0x9d
add ecx, 0x96
or edi, 0x12c
add edi, 0x13a
nop
nop
nop
nop
mov ecx, 0x1e
dec ecx
or ecx, 0x29
sub edi, 0x78
pop ecx
pop edi
push 1
call sub.kernel32.dll_SetErrorMode
push esi
or esi, 0x85
and esi, 0x25
push esi
pop esi
and esi, 0x197
add esi, 0x166
add esi, 0x42
xor esi, 0x42
xchg esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, 0xbe
push esi
pop esi
pop esi
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0xa5912bd
call sub.kernel32.dll_GetCurrentProcessId
push edi
xor edi, 0x3b
xor edi, 0x7f
nop
nop
nop
nop
and edi, 0x10e
dec edi
sub edi, 0xc4
xchg edi, edi
add edi, 0x182
sub edi, 0x97
or edi, 0xac
push edi
pop edi
nop
nop
xchg edi, edi
xchg edi, edi
pop edi
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.0a5347f8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0xa59145e
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.0a5347c8
lea eax, [ebp - 0x10]
call fcn.0a5347a4
lea eax, [ebp - 4]
call fcn.0a5347a4
ret