Function at 0x49a550
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, ecx
cdq
push edi
mov dword [esp + 0x10], esi
mov byte [esp + 0xf], 1
add dword [esi + 0x58], eax
mov eax, dword [esi]
adc dword [esi + 0x5c], edx
xor edi, edi
mov eax, dword [eax + 0x3c]
call eax
movss xmm0, dword [0x5d4d00]
mov ebx, dword [ebp + 8]
fstp dword [esp + 0x18]
movss xmm1, dword [esp + 0x18]
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jnp 0x49a6cf
mov edx, dword [ebp + 0xc]
mov eax, edx
sar eax, 1
comiss xmm1, xmm0
mov dword [esp + 0x1c], eax
jbe 0x49a691
xor ecx, ecx
mov dword [esp + 0x14], ecx
test eax, eax
jle 0x49a78a
mov esi, eax
movsx eax, word [ebx + ecx*2]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
cvttss2si eax, xmm0
cdq
xor eax, edx
sub eax, edx
cvttss2si edx, xmm0
cmp eax, edi
cmovg edi, eax
cmp edx, 0x7530
jle 0x49a62d
movd xmm0, edx
cvtdq2ps xmm0, xmm0
subss xmm0, dword [0x5d4ea8]
cvtps2pd xmm0, xmm0
call fcn.0057c4c0
movss xmm1, dword [esp + 0x18]
mov ecx, 0x7fff
cvtsd2ss xmm0, xmm0
cvttss2si edx, xmm0
add edx, 0x7530
cmp edx, ecx
movzx eax, dx
cmovl ecx, eax
mov eax, dword [esp + 0x14]
mov word [ebx + eax*2], cx
mov ecx, eax
jmp 0x49a67f
cmp edx, 0xffff8ad0
jge 0x49a67b
mov eax, 0xffff8ad0
sub eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
cvtps2pd xmm0, xmm0
call fcn.0057c4c0
movss xmm1, dword [esp + 0x18]
mov ecx, 0xffff8ad0
cvtsd2ss xmm0, xmm0
cvttss2si eax, xmm0
sub ecx, eax
movzx eax, cx
cmp ecx, 0xffff8000
mov ecx, 0xffff8000
cmovl eax, ecx
mov ecx, dword [esp + 0x14]
mov word [ebx + ecx*2], ax
jmp 0x49a67f
mov word [ebx + ecx*2], dx
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, esi
jl 0x49a5c0
jmp 0x49a783
test eax, eax
jle 0x49a78a
xor esi, esi
nop dword [eax + eax]
movsx eax, word [ebx + esi*2]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
cvttss2si ecx, xmm0
mov eax, ecx
mov word [ebx + esi*2], cx
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
cmovg edi, eax
inc esi
cmp esi, dword [esp + 0x1c]
jl 0x49a6a0
jmp 0x49a783
cmp byte [esi + 0x74], 0
je 0x49a787
mov edx, dword [ebp + 0xc]
xor ecx, ecx
sar edx, 1
test edx, edx
jle 0x49a787
cmp edx, 8
jb 0x49a763
cmp dword [0x5fb1e4], 2
jl 0x49a763
mov eax, edx
and eax, reloc.OLEAUT32.dll_VariantInit
jns 0x49a704
dec eax
or eax, 0xfffffff8
inc eax
mov edi, edx
xorps xmm1, xmm1
sub edi, eax
movaps xmm2, xmm1
nop
movq xmm0, qword [ebx + ecx*2]
pmovsxwd xmm0, xmm0
pabsd xmm0, xmm0
pmaxsd xmm1, xmm0
movq xmm0, qword [ebx + ecx*2 + 8]
add ecx, 8
pmovsxwd xmm0, xmm0
pabsd xmm0, xmm0
pmaxsd xmm2, xmm0
cmp ecx, edi
jl 0x49a710
pmaxsd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
pmaxsd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 4
pmaxsd xmm1, xmm0
movd edi, xmm1
cmp ecx, edx
jge 0x49a787
mov esi, edx
nop dword [eax]
movsx eax, word [ebx + ecx*2]
cdq
xor eax, edx
sub eax, edx
cmp eax, edi
cmovg edi, eax
inc ecx
cmp ecx, esi
jl 0x49a770
mov esi, dword [esp + 0x10]
mov edx, dword [ebp + 0xc]
cmp byte [esi + 0x74], 0
je 0x49a9d6
movss xmm1, dword [esi + 0x78]
mulss xmm1, dword [0x5d4eac]
movd xmm0, edi
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x49a7e6
movd xmm1, dword [esi + 0x70]
xor ecx, ecx
cmp byte [esi + 0x6c], cl
mov eax, edx
cvtdq2ps xmm1, xmm1
setne cl
inc ecx
sar eax, cl
imul eax, eax, 0x3e8
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
call fcn.0057513e
add dword [esi + 0x80], eax
adc dword [esi + 0x84], edx
jmp 0x49a7fa
mov dword [esi + 0x80], 0
mov dword [esi + 0x84], 0
mov eax, dword [esi + 0x84]
cmp eax, dword [esi + 0x8c]
jl 0x49a820
jg 0x49a818
mov eax, dword [esi + 0x80]
cmp eax, dword [esi + 0x88]
jbe 0x49a820
xor cl, cl
mov byte [esp + 0xf], cl
jmp 0x49a824
mov cl, byte [esp + 0xf]
mov eax, dword [esi + 0x90]
test eax, eax
je 0x49a9d2
test cl, cl
je 0x49aa17
cmp dword [esi + 0x9c], 0
je 0x49a9ac
imul dword [esi + 0x70]
push 0
push 0x3e8
push edx
push eax
call fcn.0051ac90
xor ecx, ecx
cmp byte [esi + 0x6c], cl
setne cl
inc ecx
call fcn.0051ad40
mov edx, dword [esi + 0x98]
mov edi, eax
mov eax, dword [esi + 0x9c]
cmp edi, eax
mov ecx, dword [esi + 0x94]
cmovg edi, eax
sub edx, edi
mov dword [esp + 0x24], edi
add edx, eax
mov dword [esp + 0x1c], edx
cmp edx, ecx
jl 0x49a895
sub edx, ecx
mov dword [esp + 0x1c], edx
mov eax, dword [esi + 0x60]
sub ecx, edx
cmp edi, ecx
mov dword [esp + 0x14], eax
cmovl ecx, edi
mov dword [esp + 0x18], ecx
test eax, eax
je 0x49a8c7
push dword [esi + 0x64]
mov eax, dword [esi + 0xa0]
push ecx
add eax, edx
push eax
call dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0xa0]
add eax, edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 0x20], eax
test ecx, ecx
jle 0x49a930
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov edi, eax
nop word [eax + eax]
mov eax, 0x3000
mov ecx, edi
cmp ebx, eax
cmovl eax, ebx
push eax
push esi
mov dword [esp + 0x28], eax
call fcn.004c0aa0
test al, al
je 0x49a915
add esi, dword [esp + 0x20]
sub ebx, dword [esp + 0x20]
jmp 0x49a91d
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
test ebx, ebx
jg 0x49a8f0
mov esi, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
cmp ecx, edi
je 0x49a9a8
mov edx, dword [esi + 0x60]
test edx, edx
je 0x49a952
push dword [esi + 0x64]
mov eax, edi
sub eax, ecx
push eax
push dword [esi + 0xa0]
call edx
mov ecx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esi + 0xa0]
sub edi, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x44]
mov dword [esp + 0x20], eax
test edi, edi
jle 0x49a9a8
mov ebx, dword [esp + 0x24]
mov esi, eax
nop
mov eax, 0x3000
mov ecx, esi
cmp edi, eax
cmovl eax, edi
push eax
push ebx
mov dword [esp + 0x2c], eax
call fcn.004c0aa0
test al, al
je 0x49a995
add ebx, dword [esp + 0x24]
sub edi, dword [esp + 0x24]
jmp 0x49a99d
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
test edi, edi
jg 0x49a970
mov esi, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
mov cl, byte [esp + 0xf]
cmp dword [esi + 0x98], 0
je 0x49a9bf
mov dword [esi + 0x98], 0
cmp dword [esi + 0x9c], 0
je 0x49a9d2
mov dword [esi + 0x9c], 0
test cl, cl
je 0x49aa0e
mov eax, dword [esi + 0x60]
mov edi, dword [ebp + 0xc]
test eax, eax
je 0x49a9ea
push dword [esi + 0x64]
push edi
push ebx
call eax
add esp, 0xc
mov ecx, dword [esi + 0x44]
push edi
push ebx
call fcn.004c0aa0
test al, al
jne 0x49aa0e
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esi + 0x44]
push edi
push ebx
call fcn.004c0aa0
test al, al
je 0x49a9f8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp dword [esi + 0xa0], 0
jne 0x49aa3d
push 0x81330
mov dword [esi + 0x94], 0x81330
call fcn.0052147f
add esp, 4
mov dword [esi + 0xa0], eax
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x49aa0e
mov eax, dword [esi + 0x98]
add eax, dword [esi + 0x9c]
mov ecx, dword [esi + 0x94]
cdq
idiv ecx
mov eax, dword [ebp + 0xc]
mov edi, edx
sub ecx, edi
cmp eax, ecx
jle 0x49aa8d
mov eax, dword [esi + 0xa0]
push ecx
add eax, edi
push ebx
push eax
call fcn.0051cad0
sub edi, dword [esi + 0x94]
add esp, 0xc
add edi, dword [ebp + 0xc]
push edi
push ebx
push dword [esi + 0xa0]
jmp 0x49aa98
push eax
mov eax, dword [esi + 0xa0]
push ebx
add eax, edi
push eax
call fcn.0051cad0
mov eax, dword [ebp + 0xc]
add esp, 0xc
add dword [esi + 0x9c], eax
mov ecx, dword [esi + 0x9c]
mov eax, dword [esi + 0x94]
cmp ecx, eax
jle 0x49aa0e
sub ecx, eax
add dword [esi + 0x98], ecx
mov ecx, dword [esi + 0x98]
cmp ecx, eax
jl 0x49aad7
sub ecx, eax
mov dword [esi + 0x98], ecx
pop edi
mov dword [esi + 0x9c], eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8