Function at 0x40a348
Capabilities:
Encode data using xor

Disassembly:
cmp ecx, esi
js 0x40a31a
add ebx, 0x3a6b5f5d
dec esi
cmp dword [0x502355], ebx
jno 0x40a329
mov ecx, dword [0x502374]
add eax, ecx
neg esi
not edi
and esi, 0xaa0fca69
sub eax, 0xdbd92ff0
ror esi, 0x1e
xor ebx, ebp
xchg ebx, edx
call fcn.00479779
mov dword [0x50367c], ebx
and esi, edx
xor eax, 0x2ca27c37
sub ebx, ecx
xchg esi, edx
add ecx, esi
add dword [0x5034b6], 0xa91b1cc9
or ebx, 0xf2386460
sub eax, 0x477f844e
and eax, esp
and ebx, 0x9962d167
mov ecx, 0x36dd931a
rol ebx, 0x1c
neg eax
call fcn.00463e62
not eax
test dword [0x50073b], 0x8045ee31
jno 0x40a398
and ebx, eax
mov edi, dword [0x501c2f]
shr eax, 1
shl edx, 0x1d
rol edi, 0x17
or esi, edi
neg edi
dec ecx
jne 0x40a37e
mov esi, esp
call fcn.0046b68c
not esi
cmp dword [0x5019ab], eax
jle 0x40a3c2
neg ebx
xor ebx, 0x84acceb3
mov ecx, 0x463741bd
add ebx, dword [sub.user32.dll_DefWindowProcW]
xchg ebx, eax
mov eax, 0x5415d0a7
call fcn.0042abc1
shr eax, 0x1a
sub edx, esp
xor edi, 0x7d056159
sub eax, ebp
add esi, dword [0x500cdf]
and dword [0x5032f7], ebx
mov edi, 0x75facde
and eax, edx
add ebx, ebp
not edi
neg edx
or dword [0x503284], ecx
dec ecx
jne 0x40a3cd
neg esi
mov ecx, 0x58daf0d8
inc edx
cmp esp, ecx
jne 0x40a421
add edi, 0x94feb573
xor dword [0x5037b2], ebx
cmp ebp, 0xb870381
jne 0x40a435
or esi, 0x83e916d2
sub ebx, 0x14409f40
and edx, ecx
mov edi, 0xa3f0d023
dec ecx
jne 0x40a416
mov eax, esi
shr edx, 1
shl esi, 0xb
call fcn.00492455
or esi, 0xbaa0efd3
neg esi
call fcn.0045f1cc
sub dword [0x503509], 0xae236495
add ecx, ebx
mov ecx, dword [0x500110]
add ecx, ebx
xchg ebx, edx
rol esi, 0x13
shr edx, 0x1a
neg ebx
ror esi, 0x18
mov ecx, 0x42de7150
xor dword [0x503876], edx
neg ecx
call fcn.00467d70
or edi, dword [0x503f13]
ror edi, 9
sub edi, ebx
add ecx, 0xed551068
call fcn.0045ccad
or edi, dword [0x503dfa]
mov dword [0x5035fe], eax
dec esi
ror ecx, 0x1a
xor ecx, 0x97da6c70
or edi, dword [0x503958]
add dword [0x50345e], ecx
call fcn.00447406
neg esi
add dword [0x5035ba], ebx
neg ecx
inc eax
add edx, dword [0x503b4c]
dec eax
neg ecx
mov dword [0x5037e7], edi
neg esi
call fcn.004df33e
and dword [0x5034cd], edi
xor ecx, 0x97da6c70
rol ecx, 0x1a
inc esi
or dword [0x5037ac], ecx
sub ecx, 0xed551068
add edi, ebx
rol edi, 9
call fcn.004c9c84
neg ecx
and dword [0x50363c], edx
or ecx, 0xb2c2a35d
sub dword [0x5036d6], edx
add ecx, 0x17b42909
sub dword [0x50356c], esi
ror ecx, 0x1a
add ecx, 0xc852c2e5
ror eax, 0xd
or eax, dword [0x503ed7]
rol ebx, 0xc
sub dword [0x5037a1], edi
rol edx, 0x13
call fcn.004d401c
call fcn.004cd46d
ror edx, 0x13
mov dword [0x5033d9], esi
ror ebx, 0xc
rol eax, 0xd
sub ecx, 0xc852c2e5
rol ecx, 0x1a
sub ecx, 0x17b42909
xor ecx, 0xf2def35d
rol ebx, 0xe
xchg edx, esi
not esi
add edx, dword [0x503a2b]
add edx, 0x5bc20fb6
xchg ecx, edx
dec esi
add esi, ebx
not edx
xchg ecx, eax
and dword [0x50325d], ecx
add edx, ebx
or edi, dword [0x5039ab]
call fcn.00401564
mov dword [0x5036ed], edi
call fcn.004ba706
call fcn.0048f0a9
sub edx, ebx
add dword [0x5038bf], esi
xchg ecx, eax
not edx
sub esi, ebx
inc esi
xchg ecx, edx
sub edx, 0x5bc20fb6
not esi
xchg edx, esi
ror ebx, 0xe
push ecx
add eax, esi
inc esi
xor ebx, 0x20ff36e
xor ebx, ebp
call fcn.0042854d
mov dword [0x503566], eax
not esi
xor ecx, 0x9a017fd4
inc eax
xor edi, 0x3725c86d
sub ecx, dword [0x503e37]
not esi
and dword [0x503579], edi
xor edi, ecx
rol esi, 0x1f
xor dword [0x5035d3], edx
sub eax, 0x8cc6bf7f
xor eax, 0x863fa02e
call fcn.0040c148
sub ecx, 0xef42b1
xchg esi, eax
xor eax, dword [0x503b43]
xchg esi, eax
add ecx, 0xef42b1
call fcn.00489f34
xor eax, 0x863fa02e
add eax, 0x8cc6bf7f
sub dword [0x5033e6], esi
ror esi, 0x1f
xor edi, ecx
not esi
xor edi, 0x3725c86d
dec eax
xor ecx, 0x9a017fd4
not esi
sub dword [0x50346b], edi
call fcn.004ac2dc
xor ebx, ebp
xor ebx, 0x20ff36e
dec esi
sub eax, esi
mov ecx, 0x3f6ee467
neg esi
dec ecx
xor dword [0x503351], ebx
dec esi
call fcn.004676db
dec edi
add edi, dword [0x503f85]
xor ecx, dword [0x503de8]
xor eax, esp
dec esi
add dword [0x5036a7], esi
xor ebx, esi
xchg eax, edx
add dword [0x50378c], ecx
xchg ebx, esi
xor edi, dword [0x503b75]
xchg ebx, esi
xchg eax, edx
xor ebx, esi
xor dword [0x503227], eax
inc esi
xor eax, esp
inc edi
inc esi
xor dword [0x5035ed], ebx
inc ecx
neg esi
add ecx, 0x52da9622
dec edi
or eax, dword [0x503970]
dec edi
xchg ebx, edx
add edi, dword [0x503c17]
call fcn.0042681a
neg esi
inc eax
or ebx, dword [0x503cd6]
xor dword [0x5036f0], ebx
ror edi, 0xc
sub edi, dword [0x503ed3]
sub dword [0x5033ee], edx
not ebx
add dword [0x503637], esi
dec eax
xor ecx, dword [0x503b2a]
add dword [0x503612], ecx
call fcn.00494d4d
call fcn.0040da5d
add dword [0x503899], esi
inc eax
or dword [0x5038c0], edi
not ebx
and dword [0x503414], ecx
rol edi, 0xc
sub dword [0x5032ab], ebx
dec eax
neg esi
xchg ebx, edx
inc edi
inc edi
xor ecx, 0x927b7aba
rol ebx, 0x12
call fcn.0047dec7
sub edx, dword [0x503cb1]
xor eax, ecx
xchg edi, eax
sub eax, dword [0x503d30]
xor edx, eax
call fcn.00472abf
xor edi, dword [0x503ae7]
xor ecx, esp
sub esi, edi
xor edi, esp
call fcn.00438f63
xchg ebx, eax
xor dword [0x503825], edi
xor esi, 0x2b6307b1
sub ebx, dword [0x503d27]
inc ebx
sub dword [0x503553], ebx
ror ebx, 0xd
call fcn.0049dcaf
call fcn.004a79ba
rol ebx, 0xd
and dword [0x503381], edx
dec ebx
xor esi, 0x2b6307b1
mov dword [0x503897], ebx