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

Disassembly:
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
fld dword [edx + 4]
fcomp dword [ecx + 4]
sub esp, 0x78
push ebp
push esi
push edi
fnstsw ax
test ah, 0x41
jne 0x401079
mov esi, dword [esp + 0x9c]
fld dword [esi + 4]
fcomp dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x401075
mov edi, ecx
mov ebp, edx
jmp 0x401099
mov edi, esi
jmp 0x401095
mov ebp, dword [esp + 0x9c]
fld dword [ebp + 4]
fcomp dword [edx + 4]
fnstsw ax
test ah, 0x41
jne 0x401093
mov edi, edx
mov esi, ecx
jmp 0x401099
mov edi, ebp
mov esi, edx
mov ebp, ecx
fld dword [edi + 4]
fcomp dword [esi + 4]
fnstsw ax
test ah, 0x44
jp 0x4010b7
fld dword [ebp + 4]
fcomp dword [edi + 4]
fnstsw ax
test ah, 0x44
jnp 0x4016e8
fld dword [edi + 4]
fsub dword [esi + 4]
fld dword [ebp]
fsub dword [esi]
fld dword [ebp + 4]
fsub dword [esi + 4]
fld dword [edi]
fsub dword [esi]
fld st(2)
fmul st(4)
fld st(1)
fmul st(3)
fnstcw word [esp + 0xc]
fsubp st(1)
movzx eax, word [esp + 0xc]
fld1
or eax, 0xc00
fdivrp st(1)
fld dword [ebp + 8]
fsub dword [esi + 8]
fld dword [edi + 8]
fsub dword [esi + 8]
fst dword [esp + 0x60]
fld st(1)
fmul st(7)
fxch st(1)
fmul st(5)
fsubp st(1)
fmul st(2)
fstp dword [esp + 0x4c]
fld dword [ebp + 0xc]
fsub dword [esi + 0xc]
fld dword [edi + 0xc]
fsub dword [esi + 0xc]
fstp dword [esp + 0x50]
fld st(0)
fmulp st(7)
fld dword [esp + 0x50]
fmulp st(5)
fxch st(6)
fsubrp st(4)
fxch st(3)
fmul st(1)
fst dword [esp + 0x64]
fld dword [esp + 0x60]
mov dword [esp + 0x60], eax
fmul st(5)
fxch st(4)
fmul st(3)
fsubp st(4)
fxch st(3)
fmul st(1)
fld dword [esp + 0x50]
fmul st(5)
fxch st(6)
fmulp st(3)
fxch st(5)
fsubrp st(2)
fmulp st(1)
fld dword [esp + 0x4c]
fld st(0)
fld dword [0x627b10]
fmul st(1), st(0)
fldcw word [esp + 0x60]
fxch st(1)
fistp qword [esp + 0x7c]
mov eax, dword [esp + 0x7c]
add eax, eax
add eax, eax
fldcw word [esp + 0xc]
add eax, eax
mov dword [esp + 0x70], eax
fnstcw word [esp + 0xc]
fmul st(3)
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov dword [esp + 0x60], eax
fldcw word [esp + 0x60]
fistp qword [esp + 0x7c]
mov eax, dword [esp + 0x7c]
fldcw word [esp + 0xc]
fldz
add eax, eax
fld st(0)
add eax, eax
fst dword [esp + 0x1c]
add eax, eax
fxch st(1)
mov dword [esp + 0x74], eax
fst dword [esp + 0x10]
fst dword [esp + 0x14]
fst dword [esp + 0x18]
fst dword [esp + 0x28]
fst dword [esp + 0x2c]
fst dword [esp + 0x30]
fstp dword [esp + 0x34]
fld dword [edi + 4]
fcomp dword [esi + 4]
fnstsw ax
test ah, 0x44
jnp 0x401203
fstp st(0)
fld dword [esi]
fsub dword [edi]
fld dword [esi + 4]
fsub dword [edi + 4]
fdivp st(1)
fst dword [esp + 0x1c]
fld st(0)
fmul st(2)
fadd st(6)
fstp dword [esp + 0x14]
fld st(0)
fmul st(4)
fadd st(3)
fstp dword [esp + 0x18]
fld dword [edi + 4]
fcomp dword [ebp + 4]
fnstsw ax
test ah, 0x44
jnp 0x401221
fld dword [ebp]
fsub dword [edi]
fld dword [ebp + 4]
fsub dword [edi + 4]
fdivp st(1)
fstp dword [esp + 0x10]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 1
je 0x4016de
fld dword [esi + 4]
fcomp dword [ebp + 4]
fnstsw ax
test ah, 0x44
jnp 0x401269
fld dword [ebp + 4]
fsub dword [esi + 4]
fdivp st(4)
fxch st(3)
fst dword [esp + 0x28]
fld st(0)
fmulp st(4)
fxch st(3)
faddp st(4)
fxch st(3)
fstp dword [esp + 0x30]
fmul st(1)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x34]
fstp dword [esp + 0x2c]
jmp 0x401273
fstp st(3)
fstp st(1)
fstp st(0)
fstp st(1)
fstp st(0)
fld dword [edi + 4]
push ebx
fadd dword [0x627b08]
sub esp, 8
fstp qword [esp]
call fcn.005f7250
add esp, 8
call fcn.005f7380
mov ebx, eax
mov dword [esp + 0x4c], ebx
fild dword [esp + 0x4c]
sub esp, 8
fld dword [0x627b08]
fadd st(1), st(0)
fxch st(1)
fsub dword [edi + 4]
fld st(0)
fld dword [esp + 0x28]
fmul st(1), st(0)
fxch st(1)
fadd dword [edi]
fstp dword [esp + 0x18]
fld st(1)
fld dword [esp + 0x1c]
fmul st(1), st(0)
fxch st(1)
fadd dword [edi]
fstp dword [esp + 0x2c]
fld st(2)
fld dword [esp + 0x20]
fmul st(1), st(0)
fxch st(1)
fadd dword [edi + 8]
fstp dword [esp + 0x4c]
fld dword [esp + 0x24]
fmul st(4), st(0)
fxch st(4)
fadd dword [edi + 0xc]
fstp dword [esp + 0x50]
fld dword [ebp + 4]
fcomp dword [esi + 4]
fnstsw ax
test ah, 5
jp 0x401393
fstp st(1)
fxch st(1)
fstp dword [esp + 0x34]
fstp dword [esp + 0x3c]
fstp dword [esp + 0x40]
fadd dword [ebp + 4]
fstp qword [esp]
call fcn.005f7250
call fcn.005f7380
fld dword [esi + 4]
fadd dword [0x627b08]
mov edi, eax
mov dword [esp + 0x30], edi
fstp qword [esp]
call fcn.005f7250
add esp, 8
call fcn.005f7380
sub edi, ebx
mov dword [esp + 0x64], edi
fild dword [esp + 0x64]
fld dword [esp + 0x20]
fmul st(1)
fld dword [esp + 0x10]
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x58]
fld st(1)
fmul dword [esp + 0x18]
fadd dword [esp + 0x44]
fstp dword [esp + 0x60]
fxch st(1)
fmul dword [esp + 0x1c]
fadd dword [esp + 0x48]
fstp dword [esp + 0x64]
fild dword [esp + 0x28]
fld dword [0x627b08]
fadd st(1), st(0)
fxch st(1)
fsub dword [ebp + 4]
fmul dword [esp + 0x30]
fadd dword [ebp]
fstp dword [esp + 0x5c]
jmp 0x40141d
fstp st(3)
fstp st(1)
fstp st(1)
fstp dword [esp + 0x38]
fadd dword [esi + 4]
fstp qword [esp]
call fcn.005f7250
call fcn.005f7380
fld dword [ebp + 4]
fadd dword [0x627b08]
mov edi, eax
mov dword [esp + 0x30], edi
fstp qword [esp]
call fcn.005f7250
add esp, 8
call fcn.005f7380
fild dword [esp + 0x28]
fld dword [0x627b08]
sub edi, ebx
mov dword [esp + 0x5c], edi
fadd st(1), st(0)
fxch st(1)
fsub dword [esi + 4]
fld dword [esp + 0x2c]
fmul st(1)
fadd dword [esi]
fstp dword [esp + 0x58]
fld dword [esp + 0x34]
fmul st(1)
fadd dword [esi + 8]
fstp dword [esp + 0x60]
fmul dword [esp + 0x38]
fadd dword [esi + 0xc]
fstp dword [esp + 0x64]
fild dword [esp + 0x5c]
fmul dword [esp + 0x14]
fadd dword [esp + 0x24]
fstp dword [esp + 0x5c]
fld dword [esp + 0x10]
fxch st(1)
fldz
mov dword [esp + 0x54], eax
fld dword [esp + 0x50]
xor edx, edx
fcom st(1)
or ecx, 0xffffffff
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
fnstsw ax
test ah, 5
jp 0x401441
fstp st(0)
jmp 0x40145b
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x401450
mov dword [esp + 0x3c], edx
jmp 0x40145f
fcom dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x40145f
mov dword [esp + 0x3c], ecx
fld dword [esp + 0x68]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x401472
fstp st(1)
fstp st(0)
jmp 0x40148e
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x401483
fstp st(0)
mov dword [esp + 0x40], edx
jmp 0x401492
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 0x41
jne 0x401492
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0x8c]
mov ebp, eax
shr eax, 3
shr ebp, 7
add ebp, eax
mov eax, dword [esp + 0x90]
mov ecx, ebx
imul ecx, eax
cmp ebx, dword [esp + 0x54]
lea ecx, [edx + ecx*2]
mov dword [esp + 0x8c], ecx
jge 0x4016d2
lea edx, [eax + eax]
mov dword [esp + 0x80], edx
jmp 0x4014da
mov ebx, dword [esp + 0x4c]
cmp ebx, dword [esp + 0x28]
jne 0x401524
fstp st(1)
fld dword [esp + 0x58]
fst dword [esp + 0x10]
fld dword [esp + 0x5c]
fstp dword [esp + 0x24]
fld dword [esp + 0x60]
fstp dword [esp + 0x44]
fld dword [esp + 0x64]
fstp dword [esp + 0x48]
fld dword [esp + 0x2c]
fstp dword [esp + 0x20]
fld dword [esp + 0x30]
fstp dword [esp + 0x14]
fld dword [esp + 0x34]
fstp dword [esp + 0x18]
fld dword [esp + 0x38]
fstp dword [esp + 0x1c]
fxch st(1)
faddp st(1)
sub esp, 8
fstp qword [esp]
call fcn.005f7250
call fcn.005f7380
fld dword [esp + 0x2c]
fadd dword [0x627b08]
mov esi, eax
mov dword [esp + 0x74], esi
fstp qword [esp]
call fcn.005f7250
add esp, 8
call fcn.005f7380
fild dword [esp + 0x6c]
fld dword [0x627b08]
mov ecx, eax
mov edi, dword [esp + 0x3c]
fadd st(1), st(0)
mov ebx, dword [esp + 0x40]
fld dword [esp + 0x10]
mov dword [esp + 0x7c], ecx
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
fsub st(2), st(0)
or eax, 0xc00
mov dword [esp + 0x6c], eax
fld st(2)
fmul dword [esp + 0x50]
fld dword [esp + 0x44]
fadd st(1), st(0)
fld dword [0x627b04]
fmul st(2), st(0)
fldcw word [esp + 0x6c]
fxch st(2)
fistp qword [esp + 0x6c]
mov eax, dword [esp + 0x6c]
add eax, eax
add eax, eax
fldcw word [esp + 0x10]
add eax, eax
sub edi, eax
fxch st(4)
fmul dword [esp + 0x68]
fld dword [esp + 0x48]
fnstcw word [esp + 0x10]
fadd st(1), st(0)
movzx eax, word [esp + 0x10]
fxch st(1)
or eax, 0xc00
mov dword [esp + 0x6c], eax
fmulp st(2)
fldcw word [esp + 0x6c]
fxch st(1)
fistp qword [esp + 0x6c]
mov edx, dword [esp + 0x6c]
add edx, edx
add edx, edx
fldcw word [esp + 0x10]
add edx, edx
sub ebx, edx
cmp esi, ecx
jge 0x401687
mov edx, dword [esp + 0x94]
mov eax, ebx
shr eax, 0x1b
shl eax, 5
mov ecx, edi
shr ecx, 0x1b
add eax, ecx
movzx ecx, word [edx + eax*2]
mov eax, dword [esp + 0x8c]
movzx eax, word [eax + esi*2]
mov edx, eax
xor eax, ecx
shr eax, 1
and edx, ecx
and eax, 0x3def
add eax, edx
xor eax, ecx
shr eax, 1
and eax, 0x3def
add eax, edx
mov edx, dword [esp + 0x8c]
add edi, dword [esp + 0x74]
add ebx, dword [esp + 0x78]
mov ecx, eax
and ecx, 0x7c1f
and eax, 0x3e0
imul ecx, ebp
imul eax, ebp
add ecx, 0x4010
add eax, 0x200
and ecx, 0xf83e0
and eax, 0x7c00
add ecx, eax
shr ecx, 5
mov word [edx + esi*2], cx
add esi, 1
cmp esi, dword [esp + 0x7c]
jl 0x4015fa
mov eax, dword [esp + 0x80]
fxch st(1)
fadd dword [esp + 0x20]
add dword [esp + 0x8c], eax
mov eax, dword [esp + 0x4c]
add eax, 1
cmp eax, dword [esp + 0x54]
fst dword [esp + 0x10]
fld dword [esp + 0x24]
mov dword [esp + 0x4c], eax
fadd dword [esp + 0x14]
fstp dword [esp + 0x24]
fxch st(3)
fadd dword [esp + 0x18]
fstp dword [esp + 0x44]
fadd dword [esp + 0x1c]
fstp dword [esp + 0x48]
jl 0x4014d6
pop ebx
fstp st(1)
pop edi
fstp st(0)
pop esi
pop ebp
add esp, 0x78
ret
fstp st(3)
fstp st(1)
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebp
add esp, 0x78
ret