Function at 0x409558
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0
push 0
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x409616
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x409624
push 0x409644
call sub.kernel32.dll_GetModuleHandleA_1
push eax
call sub.kernel32.dll_GetProcAddress
mov dword [0x40dcd4], eax
push 0x409654
push 0x409644
call sub.kernel32.dll_GetModuleHandleA_1
push eax
call sub.kernel32.dll_GetProcAddress
mov dword [0x40dcd8], eax
cmp dword [0x40dcd4], 0
je 0x4095b6
cmp dword [0x40dcd8], 0
jne 0x4095ba
xor eax, eax
jmp 0x4095bc
mov al, 1
mov byte [0x40dcdc], al
lea eax, [ebp - 8]
mov dword [0x40c6b1], edi
ror ecx, 0x10
sub eax, ebp
rol ebx, 0xf
sub ebx, ecx
not edx
rol ecx, 0x1c
dec edi
sub ebx, 0x28729175
xchg edi, edx
cmp dword [0x40c200], 0x299211f4
jb 0x4095f0
neg eax
rol ebx, 8
inc ebx
mov ecx, ebp
xor edi, esp
rol eax, 0x1d
cmp dword [0x40c2f0], eax
ja 0x409605
mov esi, eax
rol ecx, 0x1a
sub edi, ebp
xchg edx, esi
dec eax
add esi, ebp
and edx, 0x1cec87fb
neg edx
mov ecx, 0x497968e0
mov eax, ecx
shl edi, 0x10
rol edx, 0xc
not esi
rol esi, 0x1f
add edx, 0x1c3129d4
not edi
and dword [0x40c981], edx
xor eax, edi
sub esi, dword [0x40c123]
and eax, ebx
xchg eax, edx
shl edi, 0x1b
dec ecx
jne 0x40961c
rol ecx, 0xa
cmp dword [0x40c0aa], 0x285cade8
jl 0x40965c
shr esi, 0xf
xor ebx, 0xf80fcc4f
or ebx, esp
mov ebx, 0xf1eb8d73
mov edi, 0x8edfca7f
add ecx, esi
ror edx, 6
neg edi
or edi, 0xa472bb5b
test edx, 0x236cbdce
jno 0x409686
shl eax, 0x10
mov edx, edx
shl esi, 4
or esi, 0x2ca60297
shl edi, 0x1b
add esi, edi
mov eax, dword [0x40c194]
xchg eax, edx
test esp, 0x809efbe
jo 0x4096ab
call fcn.00401e54
mov ecx, 0x30303b19
and esi, 0x85fe0802
xchg edx, eax
and eax, 0x37933938
ror edi, 0x1d
call fcn.00406aac
xchg edx, esi
and edi, 0xf12bdc5b
ror edx, 0x15
sub edx, 0x4b7e13ed
test dword [0x40c2e1], ecx
jo 0x4096e2
shr edi, 9
add dword [0x40c46f], esi
and eax, dword [0x40c16b]
add esi, esp
ror esi, 0xf
xor ebx, edi
sub edi, 0xf37366a
shr esi, 0xa
dec ecx
jne 0x4096b0
shr ebx, 2
inc esi
xor ebx, 0x629b22cd
mov ecx, 0x3693b512
cmp eax, 0x696ec6d2
ja 0x40971c
shr esi, 0x1f
not esi
xor ebx, ecx
or esi, dword [0x40c3ea]
and edi, edx
not ebx
shl edi, 0xc
not esi
inc ebx
shr eax, 2
xchg ebx, edx
ror eax, 0xb
neg eax
dec ecx
jne 0x409711
add edx, 0xb5696fc0
xchg ecx, edx
mov ebx, ecx
cmp edx, edi
jnp 0x40974e
xor esi, edx
ror ebx, 0x1d
add edi, 0x4ed008e3
mov ecx, 0xd33b3ba2
sub esi, ebx
xor eax, ecx
xchg ecx, eax
mov esi, eax
xor edx, 0x9157d3af
sub esi, 0x5bdf0961
test dword [0x40c20e], ebx
jb 0x40977a
xor edi, ebx
mov dword [0x40c5cf], eax
call fcn.00406aac
inc ecx
ror edi, 0xc
not edi
xor edi, 0x55b38f20
mov ebx, 0xe343840
or dword [0x40c867], esi
call fcn.00405083
add eax, dword [0x40cea6]
ror eax, 3
call fcn.00403092
inc ecx
xor edx, edi
sub ebx, dword [0x40cd93]
xor eax, esi
ror ecx, 0x1f
inc edi
sub ecx, dword [0x40cdac]
not esi
inc edi
mov dword [0x40c40b], esi
sub dword [0x40c97b], ebx
dec edi
not esi
dec edi
rol ecx, 0x1f
xor eax, esi
xor edx, edi
dec ecx
call fcn.004032a5
rol eax, 3
or dword [0x40c461], esi
or ebx, 0x1540536d
ror eax, 3
xchg ebx, esi
inc edi
rol esi, 8
dec esi
add edx, esp
or edi, dword [0x40cf8d]
invalid
invalid
invalid