Function at 0x40495a
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 8]
mov edx, dword [esp + 4]
mov ecx, dword [esp + 0xc]
xor edx, 0x719
push ebx
push ebp
push esi
lea esi, [eax - 0x3a9d]
add ecx, 0xffffbfca
lea ebx, [eax - 0x492]
lea ebp, [eax - 0x4aa]
mov dword [esp + 0x10], ebx
mov eax, esi
mov dword [esp + 0x14], ebp
xor eax, 0x3ea1
cmp ecx, eax
jge 0x404be9
mov eax, ebx
xor eax, 0x3bc
cmp edx, eax
je 0x404be9
xor edx, 0x6f9
push edi
cmp esi, edx
jg 0x404b8d
mov ecx, dword [0x5178d4]
mov esi, dword [esp + 0x24]
mov eax, dword [ecx + 0xd8]
cmp eax, dword [esi + 0xac]
ja 0x4049e0
mov dword [esi + 0xb4], section..data
jmp 0x4049ef
mov eax, dword [esi + 0xf4]
add eax, dword [esi + 0x20]
add dword [ecx + 0x90], eax
xor edi, edi
mov ebx, edi
mov eax, dword [esi + 0xb4]
mov ecx, dword [ebx + eax]
add ebx, 4
mov eax, dword [esi + 0x20]
inc eax
imul eax, dword [esi + 0x118]
mov dword [esi + 0x118], eax
mov edx, dword [0x52a458]
imul edx, ecx
mov ecx, dword [0x5178d4]
mov eax, dword [ecx + 0x118]
sub eax, 0x160c63
imul eax, dword [ecx + 0xc4]
mov dword [ecx + 0xc4], eax
mov eax, dword [esi + 0x84]
mov ecx, dword [esi + 0xb8]
mov byte [ecx + eax], dl
inc dword [esi + 0x84]
mov ecx, dword [0x5178d4]
mov eax, dword [ecx + 0x1c]
sub eax, 0x12
xor dword [0x52a49c], eax
mov eax, dword [ecx + 0x44]
xor eax, dword [0x52a4ec]
xor eax, 0x13ffd7
or dword [esi + 0x5c], eax
mov eax, dword [0x52a484]
xor eax, 0x48
or dword [esi + 0x7c], eax
mov ecx, dword [0x5178d4]
mov eax, dword [0x52a4cc]
add eax, 0x194c18
or dword [ecx + 8], eax
mov eax, 0xfff09a7f
sub eax, dword [esi + 0x68]
add dword [esi + 0x124], eax
mov ecx, dword [0x5178d4]
mov eax, dword [esi + 0x110]
xor eax, 0x30
add dword [ecx + 0xd8], eax
cmp ebx, 0x29460
jl 0x4049f3
mov dword [esi + 0x100], 0x52a3d8
mov eax, dword [0x52a4e4]
sub dword [esi + 0x44], eax
mov eax, dword [0x5178d4]
push 0x12
mov eax, dword [eax + 0x98]
add eax, 0x190e11
xor dword [esi + 0x1c], eax
mov eax, dword [0x5178d4]
mov ecx, dword [eax + 0x20]
xor ecx, dword [esi + 0x1c]
pop eax
sub eax, ecx
mov ecx, dword [esi + 0xcc]
add dword [esi + 0xdc], eax
mov eax, dword [0x52a4b8]
inc eax
imul eax, dword [esi + 0x124]
mov dword [esi + 0x124], eax
mov eax, dword [esi + 0xa4]
xor dword [edi + ecx], eax
add edi, 4
mov eax, dword [esi + 0x7c]
xor eax, dword [esi + 0x1c]
xor eax, 0x18c92d
or dword [esi + 0x90], eax
mov eax, dword [0x52a454]
add eax, 0xffe736c2
imul eax, dword [esi + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [0x52a4a8]
add dword [0x52a47c], eax
cmp edi, 0x7c98c
jl 0x404ac6
mov eax, dword [esi + 0xcc]
mov dword [esi + 0xb0], eax
mov eax, dword [0x5178d4]
push dword [eax + 0x134]
mov eax, dword [eax + 0x11c]
add eax, dword [esi + 0xb8]
push eax
push dword [esi + 0x100]
call dword [0x52a488]
mov dword [esi + 0xf0], eax
jmp 0x404be8
mov ebx, dword [esp + 0x24]
mov eax, dword [ebx + 0x24]
mov edi, dword [ebx + 0xe8]
neg eax
cmp edi, eax
jne 0x404be8
mov eax, dword [esp + 0x20]
or esi, 0x39a7
add eax, 0xfffffbba
add eax, dword [esp + 0x14]
mov ebp, eax
mov eax, dword [0x5178d4]
push esi
mov eax, dword [eax + 0x9c]
or eax, 0x4036
imul eax, eax, 0x3b66
push eax
call dword [sym.imp.KERNEL32.dll_GetHandleInformation]
push ebp
call dword [sym.imp.KERNEL32.dll_CreateActCtxA]
mov ecx, dword [ebx + 0x24]
inc edi
neg ecx
cmp edi, ecx
je 0x404bb5
mov ebp, dword [esp + 0x18]
pop edi
xor ebp, 0x81e
pop esi
mov eax, ebp
pop ebp
pop ebx
ret