Function at 0x447660
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x18], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov eax, dword [edi + 0x18]
test eax, eax
je 0x44768e
cmp eax, esi
jne 0x44768e
add dword [edi + 0x1c], 1
jmp 0x4476b3
cmp byte [edi + 7], 0
je 0x4476a0
lea eax, [edi + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
jmp 0x4476a9
mov edx, dword [edi]
mov eax, dword [edx + 0x14]
mov ecx, edi
call eax
mov dword [edi + 0x1c], 0
mov dword [edi + 0x18], esi
call fcn.00445360
mov ecx, dword [0x6de734]
mov edx, dword [0x6de718]
push ecx
push edx
call fcn.006198f8
add esp, 8
push 0
push 0
xor ecx, ecx
lea esi, [esp + 0x70]
mov dword [esp + 0x34], eax
call fcn.00479300
lea ebx, [edi + 0x44]
call fcn.00479500
mov eax, esi
call fcn.00479430
xor edi, edi
lea eax, [esp + 0x14]
call fcn.0045b460
mov edi, dword [ebp + 8]
lea eax, [esp + 0x20]
call fcn.0045b460
lea eax, [esp + 0x20]
mov dword [esp + 0x28], 0xffffffff
call fcn.00459380
mov eax, dword [esp + 0x20]
test eax, eax
je 0x447725
add eax, 4
jmp 0x447727
xor eax, eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x2c]
push edx
push eax
call fcn.00445a10
mov eax, dword [esp + 0x14]
test eax, eax
je 0x447754
add eax, 4
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x447745
sub eax, edx
sar eax, 1
fld dword [0x6c138c]
lea esi, [eax + eax]
fst dword [esp + 0x34]
sub esp, 0x10
fst dword [esp + 0x48]
mov eax, esp
fld dword [0x6c1388]
mov byte [esp + 0x9c], 1
fst dword [esp + 0x4c]
fst dword [esp + 0x50]
fxch st(1)
fst dword [eax]
fstp dword [eax + 4]
fst dword [eax + 8]
fstp dword [eax + 0xc]
lea eax, [esp + 0x24]
fld1
fst dword [esp + 0x78]
fldz
fst dword [esp + 0x7c]
fst dword [esp + 0x80]
fst dword [esp + 0x84]
fst dword [esp + 0x8c]
fst dword [esp + 0x90]
fstp dword [esp + 0x94]
fst dword [esp + 0x88]
fstp dword [esp + 0x98]
call fcn.00459380
mov eax, dword [esp + 0x24]
test eax, eax
je 0x4477e0
add eax, 4
jmp 0x4477e2
xor eax, eax
push 0xffffffffffffffff
push 0
push 1
push 0
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x8c]
push edx
push esi
mov esi, dword [esp + 0x44]
push eax
push esi
call fcn.00445b40
test eax, eax
je 0x44788e
lea edi, [esp + 0x20]
call fcn.00401700
lea edi, [esp + 0x14]
call fcn.00401700
mov eax, dword [esp + 0x2c]
push 0xfffff
push eax
call fcn.006198f8
add esp, 8
cmp dword [esi + 0x1c], 0
je 0x447856
cmp dword [esi + 0x18], 0
je 0x447856
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi + 0x18], eax
jne 0x447856
add dword [esi + 0x1c], 0xffffffff
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [esi + 7], 0
mov dword [esi + 0x18], 0
je 0x447879
add esi, 0x20
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
fild dword [esi + 0x90]
xor edi, edi
lea eax, [esp + 0x14]
mov dword [esp + 0x44], edi
fmul qword [0x6c0cd0]
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], edi
fstp dword [esp + 0x4c]
fldz
fst dword [esp + 0x50]
fst dword [esp + 0x34]
fst dword [esp + 0x38]
fst dword [esp + 0x3c]
fst dword [esp + 0x40]
fst dword [esp + 0x58]
fst dword [esp + 0x5c]
fstp dword [esp + 0x64]
call fcn.00459380
mov ebx, dword [esp + 0x14]
test ebx, ebx
je 0x4478e4
lea edx, [ebx + 4]
jmp 0x4478e6
xor edx, edx
call fcn.004c3c30
cmp dword [ebp + 8], edi
mov byte [esp + 0x13], al
je 0x447b40
fld dword [ebp + 0x20]
fld dword [ebp + 0x18]
jmp 0x447902
fxch st(1)
test ebx, ebx
je 0x447b3c
lea eax, [ebx + 4]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x447910
sub eax, edx
sar eax, 1
cmp edi, eax
jae 0x447b3c
mov ecx, dword [ebp + 8]
cmp byte [edi + ecx], 0
je 0x447b3c
fsubp st(1)
lea eax, [esp + 0x14]
mov dword [esp + 0x44], edi
mov byte [esp + 0x12], 0
fstp dword [esp + 0x24]
mov dword [esp + 0x18], 0xffffffff
fld dword [esp + 0x24]
fstp dword [esp + 0x1c]
call fcn.00459380
cmp byte [esp + 0x13], 0
mov ebx, dword [esp + 0x14]
jne 0x4479b1
test ebx, ebx
je 0x447970
lea edi, [ebx + 4]
jmp 0x447972
xor edi, edi
fldz
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x26]
push ecx
push ecx
fstp dword [esp]
fld dword [esp + 0x38]
call fcn.0066a3f0
push eax
push edi
push esi
lea eax, [esp + 0x70]
lea ecx, [esp + 0x58]
call fcn.004453d0
jmp 0x4479f8
test ebx, ebx
je 0x4479ba
lea edi, [ebx + 4]
jmp 0x4479bc
xor edi, edi
fldz
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x26]
push ecx
push ecx
fstp dword [esp]
fld dword [esp + 0x38]
call fcn.0066a3f0
push eax
lea edx, [esp + 0x50]
push edx
mov ecx, edi
mov eax, esi
call fcn.00445820
test eax, eax
jne 0x447b10
fldz
mov eax, dword [esi + 0x6c]
cmp eax, 2
fstp dword [esp + 0x18]
fld dword [esp + 0x3c]
fld dword [esp + 0x34]
jne 0x447a28
fld dword [esp + 0x24]
fld st(2)
fsub st(2)
fstp dword [esp + 0x1c]
fsub dword [esp + 0x1c]
jmp 0x447a43
cmp eax, 1
jne 0x447a47
fld dword [esp + 0x24]
fld st(2)
fsub st(2)
fstp dword [esp + 0x1c]
fsub dword [esp + 0x1c]
fmul qword [0x69f210]
fstp dword [esp + 0x18]
fld dword [esp + 0x58]
fadd qword [0x6c0a98]
fld dword [esp + 0x18]
fld st(0)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x5c]
fld dword [esp + 0x64]
fld st(0)
faddp st(2)
fld dword [esp + 0x4c]
fld st(0)
fsubp st(3)
fxch st(2)
fstp dword [esp + 0x18]
fld dword [esp + 0x1c]
fld st(0)
faddp st(5)
fxch st(4)
fstp dword [esp + 0x34]
fxch st(4)
faddp st(3)
fxch st(2)
fstp dword [esp + 0x3c]
fld dword [esp + 0x18]
fld st(0)
fadd dword [esp + 0x38]
fstp dword [esp + 0x38]
fadd dword [esp + 0x40]
fstp dword [esp + 0x40]
fld dword [esp + 0x38]
fld dword [ebp + 0x10]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x447adc
fld dword [esp + 0x40]
fcompp
fnstsw ax
test ah, 1
jne 0x447ade
mov eax, dword [esi + 0x6c]
fstp st(2)
cmp eax, 2
fstp st(0)
mov edi, dword [esp + 0x30]
jne 0x447b31
fstp dword [esp + 0x50]
jmp 0x447b40
fstp st(0)
mov edi, dword [esp + 0x30]
fstp st(0)
mov eax, dword [ebp + 8]
faddp st(1)
cmp byte [edi + eax], 0
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fadd dword [esi + 0x70]
fstp dword [esp + 0x64]
je 0x447b40
fld dword [ebp + 0x18]
add edi, 1
fld dword [ebp + 0x20]
mov dword [esp + 0x30], edi
jmp 0x447900
lea edi, [esp + 0x20]
call fcn.00401700
lea edi, [esp + 0x14]
call fcn.00401700
mov ecx, dword [esp + 0x2c]
push 0xfffff
push ecx
jmp 0x447827
cmp eax, 1
jne 0x447b3e
fstp dword [esp + 0x50]
jmp 0x447b40
fstp st(1)
fstp st(0)
mov cl, byte [esp + 0x13]
test cl, cl
mov byte [esp + 0x12], 0
je 0x447b5b
lea eax, [esi + 0xdc]
lea edx, [esi + 0xe4]
jmp 0x447b67
lea eax, [esi + 0xcc]
lea edx, [esi + 0xd4]
neg cl
mov dword [esp + 0x24], edx
sbb ecx, ecx
not ecx
and ecx, dword [esp + 0x44]
mov ebx, ecx
mov ecx, dword [eax + 4]
shr ecx, 1
cmp byte [esp + 0x13], 0
jne 0x447b89
cmp ecx, edi
jbe 0x447b89
mov ecx, edi
cmp ebx, ecx
fld dword [ebp + 0xc]
fld qword [0x6c0cd0]
jae 0x447c0b
mov edx, dword [esp + 0x24]
fldz
mov edx, dword [edx]
mov eax, dword [eax]
lea edx, [edx + ebx*4]
mov dword [esp + 0x18], edx
mov edx, ebx
shl edx, 4
lea edx, [edx + eax + 8]
mov edi, dword [esp + 0x18]
fst dword [esp + 0x28]
mov edi, dword [edi]
mov eax, dword [edx]
cmp eax, edi
mov dword [esp + 0x48], edi
jle 0x447bd4
sub eax, edi
mov dword [esp + 0x4c], eax
fild dword [esp + 0x4c]
fmul st(2)
fstp dword [esp + 0x28]
fild dword [esp + 0x48]
fmul st(2)
fadd dword [esp + 0x50]
fld dword [esp + 0x28]
fadd st(1)
fcomp st(4)
fnstsw ax
test ah, 1
je 0x447c02
add dword [esp + 0x18], 4
fstp dword [esp + 0x50]
add ebx, 1
add edx, 0x10
cmp ebx, ecx
jb 0x447bb0
jmp 0x447c09
fstp st(0)
mov byte [esp + 0x12], 1
fstp st(0)
cmp byte [ebp + 0x14], 0
je 0x447c6a
cmp byte [esp + 0x12], 0
je 0x447c6a
mov ecx, dword [esp + 0x24]
fld st(1)
fld dword [esp + 0x50]
mov edx, dword [ecx]
fld st(0)
fsubp st(2)
fild dword [edx + ebx*4]
fmulp st(3)
faddp st(2)
fxch st(1)
fsubrp st(2)
fcompp
fnstsw ax
test ah, 1
jne 0x447c6e
cmp byte [esp + 0x13], 0
je 0x447c65
lea eax, [esp + 0x14]
call fcn.00459380
mov eax, dword [esp + 0x14]
test eax, eax
je 0x447c59
add eax, 4
jmp 0x447c5b
xor eax, eax
call fcn.004c3f60
cmp eax, 1
jne 0x447c6e
add ebx, 1
jmp 0x447c6e
fstp st(0)
fstp st(0)
cmp byte [esp + 0x13], 0
lea edi, [esp + 0x20]
jne 0x447cd9
call fcn.00401700
lea edi, [esp + 0x14]
call fcn.00401700
mov eax, dword [esp + 0x2c]
push 0xfffff
push eax
call fcn.006198f8
add esp, 8
cmp dword [esi + 0x1c], 0
je 0x447cb4
cmp dword [esi + 0x18], 0
je 0x447cb4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi + 0x18], eax
je 0x447d58
cmp byte [esi + 7], 0
mov dword [esi + 0x18], 0
jne 0x447d74
mov edx, dword [esi]
mov eax, dword [edx + 0x18]
mov ecx, esi
call eax
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
test dword [esi + 0xf4], 0xfffffffe
je 0x447b14
cmp dword [esi + 0xf8], ebx
jbe 0x447d09
mov edx, dword [esi + 0xf0]
lea ecx, [ebx + ebx*2]
movzx eax, word [edx + ecx*8 + 0x12]
mov ecx, dword [esp + 0x44]
lea ebx, [eax + ecx + 1]
jmp 0x447d21
mov eax, dword [esi + 0xf8]
mov ecx, dword [esi + 0xf0]
lea eax, [eax + eax*2]
movzx ebx, word [ecx + eax*8 - 6]
add ebx, dword [esp + 0x44]
call fcn.00401700
lea edi, [esp + 0x14]
call fcn.00401700
mov edx, dword [esp + 0x2c]
push 0xfffff
push edx
call fcn.006198f8
add esp, 8
cmp dword [esi + 0x1c], 0
je 0x447d67
cmp dword [esi + 0x18], 0
je 0x447d67
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi + 0x18], eax
jne 0x447d67
add dword [esi + 0x1c], 0xffffffff
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [esi + 7], 0
mov dword [esi + 0x18], 0
je 0x447d89
add esi, 0x20
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, dword [esi]
mov edx, dword [eax + 0x18]
mov ecx, esi
call edx
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 0x20