Function at 0x4777b4
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.00405458
xor eax, eax
push ebp
push 0x477aac
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetCurrentThread
push ebx
push ecx
or ecx, 0x19b
xchg ebx, ecx
nop
nop
nop
nop
nop
add ebx, 0xc
nop
nop
nop
nop
nop
add ebx, 0xd5
pop ecx
pop ebx
lea eax, [ebp - 0x10]
xor edx, edx
call fcn.004054c4
push 0x477ab8
call sub.kernel32.dll_GlobalAddAtomW
mov dl, 1
mov eax, dword [0x417840]
call fcn.0041bf70
mov dword [ebp - 0x1c], eax
push edx
sub edx, 0xe2
dec edx
xchg edx, edx
xchg edx, edx
nop
nop
mov edx, 0x29
mov edx, 0x6d
and edx, 0x2e
sub edx, 0x16
add edx, 0x15a
dec edx
pop edx
call sub.kernel32.dll_GetCurrentThreadId_1
push eax
dec eax
mov eax, 0x75
sub eax, 0x18e
and eax, 0x141
dec eax
and eax, 0xaf
or eax, 0x163
or eax, 0x1a9
push eax
pop eax
pop eax
mov dx, 0x20
mov eax, dword [ebp - 0x1c]
call fcn.0041b584
push edx
nop
nop
nop
xchg edx, edx
inc edx
mov edx, 0x1a5
push edx
pop edx
and edx, 0x17a
xchg edx, edx
sub edx, 0x17d
inc edx
and edx, 0xfc
mov edx, 0x96
push edx
pop edx
sub edx, 0xa3
dec edx
pop edx
call sub.kernel32.dll_GetCurrentThreadId_1
push eax
dec eax
mov eax, 0x75
sub eax, 0x18e
and eax, 0x141
dec eax
and eax, 0xaf
or eax, 0x163
or eax, 0x1a9
push eax
pop eax
pop eax
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x1c]
call fcn.0041b348
push 1
call sub.gdi32.dll_GetTextCharset
push edi
push esi
sub edi, 0x17
xor esi, 0x17c
mov esi, 0x199
mov edi, 0xfc
mov esi, 0x18d
mov esi, 0x147
xor edi, 0x114
sub esi, 0x5d
or esi, 0x115
or edi, 0xe6
or esi, 0x189
add esi, 0xc8
nop
nop
sub esi, 0x15c
pop esi
pop edi
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x477a52
inc eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], 0
push 1
call sub.user32.dll_IsMenu
push eax
push edx
inc eax
inc eax
inc edx
or eax, 0x85
dec eax
or eax, 0x4b
mov eax, 0xd9
push edx
pop edx
sub edx, 7
pop edx
pop eax
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.0040ae78
mov dword [ebp - 0x18], eax
push 1
call sub.gdi32.dll_GetTextCharset
push edi
push esi
sub edi, 0x17
xor esi, 0x17c
mov esi, 0x199
mov edi, 0xfc
mov esi, 0x18d
mov esi, 0x147
xor edi, 0x114
sub esi, 0x5d
or esi, 0x115
or edi, 0xe6
or esi, 0x189
add esi, 0xc8
nop
nop
sub esi, 0x15c
pop esi
pop edi
lea eax, [ebp - 0x2c]
mov dx, word [ebp - 0x18]
add dx, word [ebp - 8]
call fcn.004055dc
mov edx, dword [ebp - 0x2c]
lea eax, [ebp - 0x10]
call fcn.00405794
push eax
push edi
push eax
pop eax
or eax, 0x11b
or edi, 0x12c
dec eax
xchg edi, edi
mov eax, 0x32
nop
nop
nop
nop
nop
pop edi
pop eax
push 1
call sub.gdi32.dll_EndDoc
push 1
call sub.user32.dll_IsMenu
push eax
push edx
inc eax
inc eax
inc edx
or eax, 0x85
dec eax
or eax, 0x4b
mov eax, 0xd9
push edx
pop edx
sub edx, 7
pop edx
pop eax
inc dword [ebp - 0x14]
dec dword [ebp - 0x20]
jne 0x47795a
call sub.kernel32.dll_GetCurrentThread
push ebx
push ecx
or ecx, 0x19b
xchg ebx, ecx
nop
nop
nop
nop
nop
add ebx, 0xc
nop
nop
nop
nop
nop
add ebx, 0xd5
pop ecx
pop ebx
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0x10]
call fcn.00405470
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x477ab3
lea eax, [ebp - 0x2c]
mov edx, 2
call fcn.00405468
lea eax, [ebp - 0x10]
call fcn.00405460
lea eax, [ebp - 4]
call fcn.00405460
ret