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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x60
mov ebx, ecx
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x454050
mov eax, dword fs:[0]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x18]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x88]
cmp eax, dword [edi + 0x8c]
je 0x4514b6
mov dword [ebp - 0x3c], 0
push 0x7c
call fcn.004a880e
add esp, 4
mov esi, eax
mov dword [eax], vtable.std::_Associated_state_int_.0
mov dword [eax + 4], 1
add eax, 0xc
push eax
call fcn.004ac97c
add esp, 4
lea eax, [esi + 0x14]
push 2
push eax
call fcn.004aed7b
add esp, 8
lea eax, [esi + 0x44]
push eax
call fcn.004ae5fd
add esp, 4
mov byte [esi + 0x6c], 0
mov dword [esi + 0x70], 0
mov dword [esi + 0x73], 0
mov dword [esi + 0x78], 0
mov dword [ebp - 0x5c], esi
mov byte [ebp - 0x58], 0
mov byte [ebp - 0x54], 0
mov ecx, dword [edi + 0x8c]
sub ecx, dword [edi + 0x88]
mov dword [ebp - 0x30], ebx
mov eax, dword [ebx + 4]
sar ecx, 4
imul ecx, ecx, 0xb6db6db7
cmp eax, ecx
jae 0x4514d2
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
cmp ecx, 0x40000000
jae 0x451ad7
lea eax, [ecx*4]
mov dword [ebp - 0x20], ecx
cmp ecx, 0x400
jb 0x451634
add eax, 0x23
mov dword [ebp - 0x10], 3
push eax
call fcn.004a880e
add esp, 4
mov esi, eax
add esi, 0x23
and esi, 0xffffffe0
mov dword [esi - 4], eax
jmp 0x451646
mov ecx, dword [ebp + 0x20]
test ecx, ecx
js 0x4519b8
mov eax, dword [ebx + 8]
shr eax, 1
imul eax, ecx
add eax, eax
add eax, dword [ebx]
jmp 0x4519ba
movd xmm0, eax
movq xmm1, qword [0x4e90e0]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm2, xmm0
movd xmm0, ecx
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
divss xmm2, xmm0
movss dword [ebp - 0x48], xmm2
xchg dword [ebp - 0x3c], ecx
mov eax, dword [edi + 0x88]
mov ecx, dword [edi + 0x8c]
mov dword [ebp - 0x4c], ecx
lea ecx, [edi + 4]
mov dword [ebp - 0x44], ecx
lea ecx, [edi + 0x70]
mov dword [ebp - 0x40], ecx
movss xmm0, dword [0x4e90e8]
movss dword [ebp - 0x34], xmm0
cmp eax, dword [ebp - 0x4c]
je 0x451943
nop word [eax + eax]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x10], 1
push 0x40
call fcn.004a880e
add esp, 4
mov edx, eax
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [eax]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 0x44]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp - 0x40]
mov dword [edx + 0x24], eax
mov eax, dword [ecx + 0x94]
mov dword [edx + 0x30], eax
mov eax, dword [ebp + 0x14]
mov dword [edx + 8], eax
mov eax, dword [ebp + 0x18]
mov dword [edx + 0xc], eax
mov eax, dword [ebp + 0xc]
mov dword [edx + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [edx + 0x14], eax
mov eax, dword [ebp + 0x1c]
mov dword [edx + 0x28], eax
mov dword [edx + 0x2c], fcn.00451c60
mov eax, dword [ebp - 0x30]
mov dword [edx + 0x34], eax
lea eax, [ebp - 0x3c]
mov dword [edx + 0x38], eax
movss xmm1, dword [ebp - 0x34]
movaps xmm0, xmm1
movss xmm2, dword [0x4e90ec]
subss xmm0, xmm2
cvttss2si eax, xmm0
lea ecx, [ebp - 0x5c]
mov dword [edx + 0x3c], ecx
xor eax, 0x80000000
cvttss2si ecx, xmm1
ucomiss xmm1, xmm2
cmovae ecx, eax
mov dword [edx], ecx
addss xmm1, dword [ebp - 0x48]
cvttss2si eax, xmm1
movaps xmm0, xmm1
subss xmm0, xmm2
cvttss2si ecx, xmm0
xor ecx, 0x80000000
movss dword [ebp - 0x34], xmm1
ucomiss xmm1, xmm2
cmovb ecx, eax
mov dword [edx + 4], ecx
mov ecx, dword [ebp - 0x20]
mov eax, dword [ecx + 0x68]
mov dword [edx + 0x20], eax
add ecx, 8
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x38], edx
call fcn.0044cd20
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x50]
push eax
call fcn.00449500
mov eax, dword [ebp - 0x20]
add eax, 0x70
cmp eax, dword [ebp - 0x4c]
jne 0x451540
jmp 0x451943
mov dword [ebp - 0x10], 3
push eax
call fcn.004a880e
add esp, 4
mov esi, eax
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x28]
sub eax, edi
push eax
push edi
push esi
call fcn.004c4690
add esp, 0xc
test edi, edi
je 0x451689
mov eax, dword [ebp - 0x24]
sub eax, edi
cmp eax, 0x1000
jb 0x45167f
mov ecx, dword [edi - 4]
add edi, 0xfffffffc
sub edi, ecx
cmp edi, 0x20
jae 0x451ae3
add eax, 0x23
mov edi, ecx
push eax
push edi
call fcn.004a8843
add esp, 8
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x20]
lea eax, [esi + eax*4]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x8c]
sub eax, dword [edx + 0x88]
sar eax, 4
imul eax, eax, 0xb6db6db7
movd xmm0, eax
movq xmm1, qword [0x4e90e0]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm2, xmm0
mov eax, dword [ebp - 0x30]
movss xmm0, dword [eax + 4]
orpd xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
mov edi, dword [ebp + 0x18]
mov edx, edi
mov esi, dword [ebp + 0x14]
sub edx, esi
lea ecx, [edx - 3]
mov ebx, dword [ebp + 0xc]
cmp ebx, edi
cmovae ecx, edx
mov eax, dword [eax + 4]
cmp ebx, esi
cmovb ecx, edx
divss xmm2, xmm0
movss dword [ebp - 0x64], xmm2
add ecx, 0xffffffff
mov dword [ebp - 0x60], ecx
mov edx, dword [ebp + 8]
lea ecx, [edx + 4]
mov dword [ebp - 0x44], ecx
lea ecx, [edx + 0x70]
mov dword [ebp - 0x40], ecx
movss xmm0, dword [0x4e90e8]
xor esi, esi
jmp 0x45173e
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 4]
mov esi, dword [ebp - 0x38]
movss xmm0, dword [ebp - 0x68]
cmp esi, eax
jae 0x4518af
movss xmm3, dword [ebp - 0x64]
addss xmm3, xmm0
cvttss2si eax, xmm3
movaps xmm1, xmm3
movss xmm2, dword [0x4e90ec]
subss xmm1, xmm2
cvttss2si ecx, xmm1
xor ecx, 0x80000000
movss dword [ebp - 0x68], xmm3
ucomiss xmm3, xmm2
cmovb ecx, eax
movaps xmm1, xmm0
subss xmm1, xmm2
cvttss2si eax, xmm1
xor eax, 0x80000000
cvttss2si edx, xmm0
ucomiss xmm0, xmm2
cmovae edx, eax
sub ecx, edx
mov eax, dword [ebp - 0x60]
add eax, ecx
xor edx, edx
div ecx
mov ecx, eax
cmp eax, 0xa
mov eax, 0xa
cmovbe ecx, eax
mov dword [ebp - 0x50], ecx
lea eax, [ecx + 3]
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], esi
lea eax, [esi + 1]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 0x14]
jmp 0x4517d2
mov dword [edx], eax
add dword [ebp - 0x28], 4
mov ecx, dword [ebp - 0x20]
lea eax, [ecx + 3]
cmp ecx, dword [ebp + 0xc]
cmovne eax, ecx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
cmp eax, dword [ebp + 0x18]
jae 0x451730
mov edx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x20]
lea eax, [esi + edx]
mov ecx, dword [ebp + 0xc]
cmp eax, ecx
mov eax, dword [ebp - 0x4c]
cmovbe eax, edx
cmp esi, ecx
cmova eax, edx
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x10], 3
push 0x40
call fcn.004a880e
add esp, 4
mov ebx, dword [ebp - 0x20]
mov edi, dword [ebp - 0x34]
lea ecx, [edi + ebx]
mov edx, dword [ebp + 0x18]
mov esi, edx
sub esi, ebx
cmp ecx, edx
cmovbe esi, edi
mov ecx, ebx
sub ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
imul ecx, edx
add ecx, ecx
mov edx, dword [ebp + 8]
add ecx, dword [edx]
mov edi, dword [ebp - 0x44]
mov dword [eax + 0x1c], edi
mov edi, dword [ebp - 0x40]
mov dword [eax + 0x24], edi
mov edx, dword [edx + 0x94]
mov dword [eax + 0x30], edx
mov edx, dword [ebp + 0xc]
mov dword [eax + 0x10], edx
mov edx, dword [ebp + 0x10]
mov dword [eax + 0x14], edx
mov edx, dword [ebp + 0x1c]
mov dword [eax + 0x28], edx
mov dword [eax + 0x2c], fcn.00451c60
mov edx, dword [ebp - 0x30]
mov dword [eax + 0x34], edx
lea edx, [ebp - 0x3c]
mov dword [eax + 0x38], edx
lea edx, [ebp - 0x5c]
mov dword [eax + 0x3c], edx
mov edx, dword [ebp - 0x48]
mov dword [eax], edx
mov edx, dword [ebp - 0x38]
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
add esi, ebx
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x20], esi
mov dword [eax + 0xc], esi
mov dword [eax + 0x18], ecx
mov edx, dword [ebp - 0x28]
cmp edx, dword [ebp - 0x24]
jne 0x4517c0
lea ecx, [ebp - 0x2c]
lea eax, [ebp - 0x6c]
push eax
push edx
call fcn.004241d0
jmp 0x4517c6
mov eax, dword [ebp - 0x28]
sub eax, dword [ebp - 0x2c]
sar eax, 2
xchg dword [ebp - 0x3c], eax
xor edx, edx
nop dword [eax]
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x28]
sub ecx, eax
sar ecx, 2
cmp edx, ecx
jae 0x451912
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x88]
mov esi, dword [eax + edx*4]
mov dword [ebp - 0x30], edx
imul eax, edx, 0x70
mov edx, dword [ecx + eax + 0x68]
mov dword [ebp - 0x20], esi
mov dword [esi + 0x20], edx
add ecx, eax
add ecx, 8
mov dword [ebp - 0x10], 3
mov dword [ebp - 0x34], ecx
call fcn.0044cd20
mov ecx, dword [ebp - 0x34]
push dword [ebp - 0x20]
call fcn.00449500
mov edx, dword [ebp - 0x30]
add edx, 1
jmp 0x4518c0
test eax, eax
je 0x451943
mov ecx, dword [ebp - 0x24]
sub ecx, eax
cmp ecx, 0x1000
jb 0x451939
mov edx, dword [eax - 4]
add eax, 0xfffffffc
sub eax, edx
cmp eax, 0x20
jae 0x451ae3
add ecx, 0x23
mov eax, edx
push ecx
push eax
call fcn.004a8843
add esp, 8
mov eax, dword [ebp - 0x5c]
test eax, eax
je 0x451a53
cmp byte [ebp - 0x58], 0
je 0x45195e
cmp byte [eax + 0x6c], 0
jne 0x451a53
cmp byte [ebp - 0x54], 0
jne 0x451a95
mov byte [ebp - 0x54], 1
lock add dword [eax + 4], 1
mov ecx, dword [ebp - 0x5c]
test ecx, ecx
mov dword [ebp - 0x20], ecx
je 0x451a11
cmp byte [ecx + 0x6c], 0
jne 0x451a11
mov eax, dword [ecx]
mov eax, dword [eax + 4]
mov dword [ebp - 0x10], 2
call eax
mov edx, dword [ebp - 0x20]
lock sub dword [edx + 4], 1
jne 0x4519f6
mov ecx, dword [edx + 0x78]
test ecx, ecx
je 0x4519ee
mov eax, dword [ecx]
mov eax, dword [eax]
mov dword [ebp - 0x10], 0
push edx
call eax
jmp 0x4519f6
xor eax, eax
mov edi, dword [ebp + 8]
lea edx, [edi + 4]
lea esi, [edi + 0x70]
mov ecx, ebx
push dword [edi + 0x94]
push eax
push dword [edi + 0x68]
push edx
push esi
push dword [ebp + 0x1c]
push dword [edi]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebx + 4]
push 0
call fcn.00451c60
jmp 0x4519fe
mov eax, dword [edx]
mov ecx, edx
push 1
call dword [eax]
lea ecx, [ebp - 0x5c]
call fcn.0042b930
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret 0x1c
mov eax, dword [0x50d60c]
mov ecx, dword [0x50d8c0]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x451ae8
mov dword [ebp - 0x2c], 4
mov dword [ebp - 0x28], 0x5068c4
mov dword [ebp - 0x10], 2
lea eax, [ebp - 0x2c]
push eax
call fcn.004ac4d0
add esp, 4
mov eax, dword [0x50d60c]
mov ecx, dword [0x50d8c0]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x451b28
mov dword [ebp - 0x2c], 4
mov dword [ebp - 0x28], 0x5068c4
mov dword [ebp - 0x10], 1
lea eax, [ebp - 0x2c]
push eax
call fcn.004ac4d0
add esp, 4
mov eax, dword [0x50d60c]
mov ecx, dword [0x50d8c0]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x451b68
mov dword [ebp - 0x2c], 2
mov dword [ebp - 0x28], 0x5068c4
mov dword [ebp - 0x10], 1
lea eax, [ebp - 0x2c]
push eax
call fcn.004ac4d0
add esp, 4
mov dword [ebp - 0x10], 3
call fcn.00417760
call fcn.004cc578
push 0x50d60c
call fcn.004a88b7
add esp, 4
cmp dword [0x50d60c], 0xffffffff
jne 0x451a32
push method.IPAR2ProcBackend.virtual_52
call fcn.004a8b65
add esp, 4
push 0x50d60c
call fcn.004a8909
add esp, 4
mov dword [ebp - 0x10], 2
jmp 0x451a32
push 0x50d60c
call fcn.004a88b7
add esp, 4
cmp dword [0x50d60c], 0xffffffff
jne 0x451a74
push method.IPAR2ProcBackend.virtual_52
call fcn.004a8b65
add esp, 4
push 0x50d60c
call fcn.004a8909
add esp, 4
mov dword [ebp - 0x10], 1
jmp 0x451a74
push 0x50d60c
call fcn.004a88b7
add esp, 4
cmp dword [0x50d60c], 0xffffffff
jne 0x451ab6
push method.IPAR2ProcBackend.virtual_52
call fcn.004a8b65
add esp, 4
push 0x50d60c
call fcn.004a8909
add esp, 4
mov dword [ebp - 0x10], 1
jmp 0x451ab6