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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x108
mov esi, esp
mov dword [esi + 0x24], ebp
mov eax, dword [ebp + 8]
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], eax
movsd xmm0, qword [ebp + 0x1c]
mov al, byte [ebp + 0x18]
mov eax, dword [ebp + 0x14]
lea eax, [ebp + 0xc]
mov dword [esi + 0x78], eax
mov eax, esp
mov dword [esi + 0xf4], eax
mov dword [esi + 0x100], 0xffffffff
lea eax, [esi + 0xf8]
mov dword [esi + 0xfc], 0x1009a780
mov edx, dword fs:[0]
mov dword [esi + 0xf8], edx
mov dword fs:[0], eax
movsd qword [esi + 0xe8], xmm0
mov dword [esi + 0xe4], ecx
mov eax, dword [esi + 0xe4]
mov dword [esi + 0x7c], eax
lea ecx, [esi + 0xcc]
call fcn.10008f70
mov ecx, dword [ebp + 0x14]
call fcn.1004c730
mov ecx, eax
mov eax, ecx
xor eax, 0xffffcfff
and eax, ecx
mov dword [esi + 0xc0], eax
cmp dword [esi + 0xc0], 0x2000
sete al
and al, 1
mov byte [esi + 0xbf], al
cmp dword [esi + 0xc0], 0x3000
sete al
and al, 1
mov byte [esi + 0xbe], al
test byte [esi + 0xbe], 1
je 0x10084897
mov edx, 0xffffffff
mov eax, edx
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], edx
jmp 0x100848e0
mov eax, dword [0x10288f0c]
mov edx, dword [0x10288f10]
mov edi, eax
xor edi, edx
xor edi, 0xffffffff
mov ecx, edx
and ecx, edi
shl ecx, 1
sub ecx, edx
sub eax, ecx
add eax, 0x2af26eee
sub eax, 0x3169b9bc
sub eax, 0x33364c9e
cmp eax, 0x4838fb90
jb 0x10084d55
mov ecx, dword [ebp + 0x14]
call fcn.1008e430
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], edx
jmp 0x100848e0
mov eax, dword [esi + 0x68]
mov ecx, dword [esi + 0x6c]
mov dword [esi + 0x60], ecx
mov dword [esi + 0x64], eax
mov eax, dword [0x10288f1c]
sub eax, dword [0x10288f20]
or eax, 0xfd065eee
xor eax, 0xa75750a6
add eax, 0x531f3a0b
cmp eax, 0x694fbc16
jb 0x10084d62
mov ecx, dword [esi + 0x60]
mov eax, dword [0x10288f24]
mov edi, dword [0x10288f28]
xor edx, edx
div edi
mov edx, dword [esi + 0x64]
or eax, 0x3a6c5444
add eax, 0xc4f413d3
and eax, 0xffd7fbff
xor eax, 0xd22dcea8
mov dword [esi + 0xb0], edx
mov dword [esi + 0xb4], ecx
mov ecx, dword [esi + 0xc0]
mov dword [esi + 0x54], ecx
mov ecx, dword [esi + 0xb0]
mov dword [esi + 0x58], ecx
mov ecx, dword [esi + 0xb4]
mov dword [esi + 0x5c], ecx
cmp eax, 0x1831c5e4
jb 0x10084911
mov ecx, dword [esi + 0x58]
mov edx, dword [esi + 0x5c]
mov edi, dword [esi + 0x54]
mov eax, esp
mov dword [eax + 8], edi
mov dword [eax + 4], edx
mov dword [eax], ecx
call fcn.1008e5b0
mov dword [esi + 0xac], eax
mov eax, dword [esi + 0xac]
mov dword [esi + 0xa8], eax
test byte [esi + 0xbf], 1
je 0x10084aec
mov ecx, dword [0x10288f34]
mov edx, dword [0x10288f38]
mov eax, edx
and eax, ecx
xor eax, 0xffffffff
add ecx, edx
add ecx, 1
add ecx, eax
mov eax, ecx
and eax, 0x5c58719c
xor ecx, 0x5c58719c
or eax, ecx
mov ecx, 0x533799fe
xor edx, edx
div ecx
imul eax, eax, 0xe58e56b5
movsd xmm0, qword [esi + 0xe8]
movaps xmm1, xmmword [0x1022caf0]
pand xmm0, xmm1
movsd xmm1, qword [0x1022cae8]
ucomisd xmm0, xmm1
seta cl
mov byte [esi + 0x53], cl
cmp eax, 0xb31466e5
ja 0x10084d79
mov al, byte [esi + 0x53]
test al, 1
jne 0x10084a1b
jmp 0x10084aec
mov eax, dword [0x10288f3c]
or eax, dword [0x10288f40]
add eax, 0xb55bb2c6
mov ecx, 0xc59db390
xor edx, edx
div ecx
sub eax, 0x160fa52c
cmp eax, 0xbed2b744
jbe 0x10084d7e
mov eax, dword [0x10288f44]
xor edx, edx
div dword [0x10288f48]
xor eax, 0x9bd00c6e
add eax, 0xa78513e9
and eax, 0x58cfffe6
mov dword [esi + 0x4c], eax
movsd xmm0, qword [esi + 0xe8]
lea eax, [esi + 0xa4]
movsd qword [esp], xmm0
mov dword [esp + 8], eax
call fcn.1008f390
fstp qword [esi + 0x80]
movsd xmm0, qword [esi + 0x80]
mov eax, dword [esi + 0xa4]
mov dword [esp], eax
call fcn.10204485
mov edx, eax
and edx, 0xffff8a68
mov ecx, eax
or ecx, 0xffff8a68
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0x7597
or eax, 0x7597
imul eax, edx
add eax, ecx
mov ecx, 0x186a0
cdq
idiv ecx
mov ecx, eax
mov eax, dword [esi + 0x4c]
add ecx, dword [esi + 0xa8]
mov dword [esi + 0xa8], ecx
cmp eax, 0x1d5bf723
jb 0x10084a44
jmp 0x10084aec
mov eax, dword [0x10288f4c]
xor edx, edx
div dword [0x10288f50]
mov ecx, eax
or ecx, 0xabd5d222
mov eax, ecx
xor eax, 0xffffffff
and eax, 0xae64c211
and ecx, 0x519b3dee
or eax, ecx
mov edx, eax
xor edx, 0xffffffff
and edx, 0x91ba82b7
mov ecx, eax
and ecx, 0x6e457d48
imul ecx, edx
mov edx, eax
and edx, 0x91ba82b7
or eax, 0x91ba82b7
imul eax, edx
add eax, ecx
cmp eax, 0x96528fb5
jb 0x10084df7
mov eax, dword [esi + 0xa8]
mov ecx, eax
and ecx, 0x32
xor eax, 0x32
lea ecx, [eax + ecx*2]
mov dword [esi + 0x100], 0
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0
lea ecx, [esi + 0xcc]
call fcn.1008f3d0
sub esp, 8
jmp 0x10084b7f
movsd xmm0, qword [esi + 0xe8]
movsd qword [esp], xmm0
call fcn.1008f920
and al, 1
mov byte [esi + 0xa3], al
test byte [esi + 0xa3], 1
je 0x10084bb6
mov ecx, dword [ebp + 0x14]
call fcn.1004c730
mov dword [esi + 0x48], eax
jmp 0x10084bc4
mov ecx, dword [ebp + 0x14]
call fcn.1004c730
and eax, 0xffffffef
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x48]
mov dword [esi + 0x44], eax
mov ecx, dword [esi + 0x7c]
mov eax, dword [esi + 0x44]
mov dword [esi + 0x9c], eax
movsd xmm0, qword [esi + 0xe8]
movsd qword [esi + 0x28], xmm0
mov ebx, dword [esi + 0xb0]
mov edx, dword [esi + 0x9c]
mov eax, esp
mov dword [eax + 0xc], edx
lea edx, [esi + 0xc4]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov dword [eax + 8], 0x4c
call fcn.1008fac0
mov edi, eax
lea ecx, [esi + 0xcc]
mov dword [esi + 0x34], ecx
call fcn.10048970
mov ecx, dword [esi + 0x34]
mov dword [esi + 0x30], eax
mov eax, esp
mov dword [eax], 0
call fcn.100887b0
sub esp, 4
movsd xmm0, qword [esi + 0x28]
mov edx, dword [esi + 0x30]
mov ecx, eax
mov eax, esp
movsd qword [eax + 0x10], xmm0
mov dword [eax + 0xc], ebx
mov dword [eax + 8], edi
mov dword [eax + 4], edx
mov dword [eax], ecx
call fcn.100882f0
mov ecx, dword [esi + 0x34]
mov dword [esi + 0x98], eax
mov eax, dword [esi + 0x98]
mov dword [esi + 0x3c], eax
movzx eax, byte [esi + 0xa3]
mov dword [esi + 0x38], eax
call fcn.10008160
mov ecx, dword [esi + 0x38]
mov edx, dword [esi + 0x3c]
mov edi, eax
mov eax, dword [esi + 0x78]
mov dword [esi + 0x40], edi
movsx ebx, byte [ebp + 0x18]
mov edi, dword [ebp + 0x14]
movsd xmm0, qword [eax]
movsd qword [esi + 0x90], xmm0
movsd xmm0, qword [esi + 0x90]
mov eax, esp
movsd qword [eax + 4], xmm0
and ecx, 1
mov dword [eax + 0x1c], ecx
mov ecx, dword [esi + 0x40]
mov dword [eax + 0x18], edx
mov edx, dword [esi + 0x70]
mov dword [eax + 0x14], ecx
mov ecx, dword [esi + 0x7c]
mov dword [eax + 0x10], ebx
mov dword [eax + 0xc], edi
mov dword [eax], edx
call fcn.100917d0
sub esp, 0x20
jmp 0x10084ccd
mov eax, dword [0x10288f7c]
mov edx, dword [0x10288f80]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, edx
xor edx, 0xffffffff
and eax, edx
sub eax, ecx
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0xc9e2b240
xor eax, 0xffffffff
and eax, 0xc9e2b240
xor ecx, 0xffffffff
xor eax, 0xffffffff
and ecx, eax
xor eax, eax
sub eax, ecx
add eax, 0xd22686a0
xor ecx, ecx
sub ecx, eax
mov eax, ecx
xor eax, 0xffffffff
and eax, 0xbd32f6a3
and ecx, 0x42cd095c
or eax, ecx
xor eax, 0x5bbb5e5
cmp eax, 0x371f71cb
jbe 0x10084e06
lea ecx, [esi + 0xcc]
call fcn.10006100
mov eax, dword [esi + 0x74]
mov ecx, dword [esi + 0xf8]
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x1c
mov ecx, dword [ebp + 0x14]
call fcn.1008e430
jmp 0x100848cd
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x64]
mov dword [esi + 0xb0], ecx
mov dword [esi + 0xb4], eax
jmp 0x10084911
jmp 0x100849a3
movsd xmm0, qword [esi + 0xe8]
lea eax, [esi + 0xa4]
movsd qword [esp], xmm0
mov dword [esp + 8], eax
call fcn.1008f390
fstp qword [esi + 0x88]
movsd xmm0, qword [esi + 0x88]
mov eax, dword [esi + 0xa4]
mov dword [esp], eax
call fcn.10204485
mov edx, eax
xor edx, 0xffffffff
and edx, 0x7597
mov ecx, eax
and ecx, 0xffff8a68
imul ecx, edx
mov edx, eax
and edx, 0x7597
or eax, 0x7597
imul eax, edx
add eax, ecx
mov ecx, 0x186a0
cdq
idiv ecx
add eax, dword [esi + 0xa8]
mov dword [esi + 0xa8], eax
jmp 0x10084a44
mov dword [esi + 0x100], 0
jmp 0x10084b46
lea ecx, [esi + 0xcc]
call fcn.10006100
jmp 0x10084d30