Function at 0x495bb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffef4
push ebx
push esi
mov dword [ebp - 4], ecx
mov esi, edx
mov ebx, eax
mov byte [ebp - 5], 0
push 0
push 0
mov eax, ebx
call fcn.00404d74
push eax
push 0
call sub.gdi32.dll_CreateDCA
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
je 0x495dfd
xor ecx, ecx
push ebp
push 0x495df6
push dword fs:[ecx]
mov dword fs:[ecx], esp
call fcn.0047425c
test al, al
je 0x495c01
mov bl, 4
jmp 0x495c03
xor ebx, ebx
lea eax, [ebp - 0x10c]
xor ecx, ecx
mov edx, pe_nt_image_headers32
call fcn.0040324c
mov byte [ebp - 0x10c], 0x1c
mov byte [ebp - 0x108], 3
mov byte [ebp - 0x107], 0x1d
mov byte [ebp - 0x100], 0x51
xor eax, eax
mov al, bl
mov edx, eax
add edx, 0x14
mov byte [ebp + edx - 0x10c], 0x6e
mov edx, esi
shr edx, 0x18
and dl, 0xff
mov ecx, eax
add ecx, 0x18
mov byte [ebp + ecx - 0x10c], dl
mov edx, esi
shr edx, 0x10
and dl, 0xff
mov ecx, eax
add ecx, 0x19
mov byte [ebp + ecx - 0x10c], dl
mov edx, esi
shr edx, 8
and dl, 0xff
mov ecx, eax
add ecx, 0x1a
mov byte [ebp + ecx - 0x10c], dl
mov edx, esi
shr edx, 0
and dl, 0xff
mov ecx, eax
add ecx, 0x1b
mov byte [ebp + ecx - 0x10c], dl
add eax, 0x1c
mov byte [ebp + eax - 0x10c], 1
xor eax, eax
mov al, bl
add eax, 0x20
mov byte [ebp + eax - 0x10c], 0x26
mov eax, dword [ebp - 4]
mov al, byte [eax + 2]
dec al
je 0x495cc0
sub al, 2
je 0x495cd1
sub al, 4
je 0x495ce2
jmp 0x495cf3
xor eax, eax
mov al, bl
add eax, 0x24
mov byte [ebp + eax - 0x10c], 4
jmp 0x495d02
xor eax, eax
mov al, bl
add eax, 0x24
mov byte [ebp + eax - 0x10c], 6
jmp 0x495d02
xor eax, eax
mov al, bl
add eax, 0x24
mov byte [ebp + eax - 0x10c], 3
jmp 0x495d02
xor eax, eax
mov al, bl
add eax, 0x24
mov byte [ebp + eax - 0x10c], 5
mov esi, dword [ebp + 8]
mov esi, dword [esi]
dec esi
test esi, esi
jl 0x495d2a
inc esi
xor eax, eax
mov edx, dword [ebp - 4]
mov dl, byte [edx + eax + 1]
xor ecx, ecx
mov cl, bl
add ecx, 0x28
add ecx, eax
mov byte [ebp + ecx - 0x10c], dl
inc eax
dec esi
jne 0x495d0f
mov dl, 0x6e
mov esi, dword [ebp + 8]
mov esi, dword [esi]
inc esi
test esi, esi
jl 0x495d43
inc esi
xor eax, eax
mov ecx, dword [ebp - 4]
xor dl, byte [ecx + eax]
inc eax
dec esi
jne 0x495d39
mov esi, ebx
and esi, 0xff
mov eax, esi
add eax, 0x28
mov ecx, dword [ebp + 8]
add eax, dword [ecx]
mov byte [ebp + eax - 0x10d], dl
lea eax, [ebp - 0x10c]
push eax
push pe_nt_image_headers32
lea eax, [ebp - 0x10c]
push eax
push pe_nt_image_headers32
push 0x435044
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_ExtEscape
test eax, eax
jle 0x495dd9
mov eax, dword [ebp - 4]
xor ecx, ecx
mov edx, 0x100c
call fcn.0040324c
add esi, 0x29
mov al, byte [ebp + esi - 0x10c]
and al, 0x7f
and eax, 0xff
add eax, 3
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov esi, dword [ebp + 8]
mov esi, dword [esi]
dec esi
test esi, esi
jl 0x495dd5
inc esi
xor eax, eax
lea edx, [eax + 0x28]
xor ecx, ecx
mov cl, bl
add edx, ecx
mov dl, byte [ebp + edx - 0x10c]
mov ecx, dword [ebp - 4]
mov byte [ecx + eax], dl
inc eax
dec esi
jne 0x495dbb
mov byte [ebp - 5], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x495dfd
cmp dword [ebp - 0xc], 0
je 0x495df5
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteDC
ret
mov al, byte [ebp - 5]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4