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

Disassembly:
push 0xffffffffffffffff
push 0x7b80d9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1fc
mov edx, dword [ecx + 0x178]
push ebx
push ebp
push esi
test edx, edx
push edi
mov dword [esp + 0x18], ecx
jne 0x456865
xor ebx, ebx
mov dword [esp + 0x10], ebx
jmp 0x456876
mov eax, dword [ecx + 0x17c]
sub eax, edx
sar eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
xor edi, edi
xor ebp, ebp
xor edx, edx
test ebx, ebx
jle 0x456f74
mov esi, dword [ecx + 0x178]
mov eax, dword [esi + edx*4]
mov ecx, dword [esi + edx*4]
add ecx, 0xf8
mov eax, dword [eax + 0x120]
test eax, eax
je 0x4568ae
test ecx, ecx
je 0x4568ae
mov ecx, dword [eax + 0x48]
mov eax, dword [eax + 0x4c]
add edi, ecx
add ebp, eax
inc edx
cmp edx, ebx
jl 0x45688a
xor esi, esi
cmp edi, esi
jle 0x456f74
cmp ebp, esi
jle 0x456f74
push 0x58
call fcn.007a2d8d
add esp, 4
mov dword [esp + 0x28], eax
cmp eax, esi
mov dword [esp + 0x214], esi
je 0x4568ed
mov ecx, eax
call fcn.00458c90
mov ebx, eax
mov dword [esp + 0x24], ebx
jmp 0x4568f3
mov dword [esp + 0x24], esi
mov ebx, esi
push edi
mov ecx, ebx
mov dword [esp + 0x218], 0xffffffff
call fcn.00458f10
push ebp
mov ecx, ebx
call fcn.00458fd0
mov eax, dword [esp + 0x18]
mov ecx, dword [ebx + 0x2c]
mov edx, dword [ebx + 0x34]
add eax, 0x54
mov dword [esp + 0xc8], ecx
mov ecx, 0x10
mov esi, eax
lea edi, [esp + 0x30]
rep movsd dword es:[edi], dword [esi]
xor ebp, ebp
push eax
lea ecx, [esp + 0x34]
push ebp
push ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x28], ebp
call fcn.0076fc8e
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x178]
mov ecx, dword [eax + ebp*4]
mov esi, ecx
mov edi, dword [ecx + 0x120]
add esi, 0xf8
test edi, edi
je 0x456d84
test esi, esi
je 0x456d84
mov ebx, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
push ebx
mov ecx, esi
mov dword [esp + 0x18], edx
call fcn.00452cc0
mov edi, dword [edi + 0x3c]
mov esi, dword [esi + 0x18]
test edi, edi
mov dword [esp + 0xc0], edi
mov dword [esp + 0xc4], esi
je 0x456d80
test esi, esi
je 0x456d80
mov esi, dword [esp + 0x18]
push 0x3f800000
mov eax, dword [esi + 0x178]
lea ecx, [esi + 0x2c]
push ecx
lea ecx, [esi + 0x54]
push ecx
mov ecx, dword [eax + ebp*4]
call fcn.00453d20
mov eax, dword [esi + 0x178]
mov ecx, 0x10
fld dword [esp + 0x60]
mov esi, dword [eax + ebp*4]
lea edi, [esp + 0x70]
add esi, 0x38
rep movsd dword es:[edi], dword [esi]
fmul dword [esp + 0x7c]
fld dword [esp + 0x50]
fmul dword [esp + 0x78]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x74]
faddp st(1)
fld dword [esp + 0x30]
fmul dword [esp + 0x70]
faddp st(1)
fstp dword [esp + 0xcc]
fld dword [esp + 0x64]
fmul dword [esp + 0x7c]
fld dword [esp + 0x54]
fmul dword [esp + 0x78]
faddp st(1)
fld dword [esp + 0x44]
fmul dword [esp + 0x74]
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x70]
faddp st(1)
fstp dword [esp + 0xd0]
fld dword [esp + 0x68]
fmul dword [esp + 0x7c]
fld dword [esp + 0x58]
fmul dword [esp + 0x78]
faddp st(1)
fld dword [esp + 0x48]
fmul dword [esp + 0x74]
faddp st(1)
fld dword [esp + 0x38]
fmul dword [esp + 0x70]
faddp st(1)
fstp dword [esp + 0xd4]
fld dword [esp + 0x60]
fmul dword [esp + 0x8c]
fld dword [esp + 0x50]
fmul dword [esp + 0x88]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x84]
faddp st(1)
fld dword [esp + 0x30]
fmul dword [esp + 0x80]
faddp st(1)
fstp dword [esp + 0xdc]
fld dword [esp + 0x64]
fmul dword [esp + 0x8c]
fld dword [esp + 0x54]
fmul dword [esp + 0x88]
faddp st(1)
fld dword [esp + 0x44]
fmul dword [esp + 0x84]
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x80]
faddp st(1)
fstp dword [esp + 0xe0]
fld dword [esp + 0x68]
fmul dword [esp + 0x8c]
fld dword [esp + 0x58]
fmul dword [esp + 0x88]
faddp st(1)
fld dword [esp + 0x48]
fmul dword [esp + 0x84]
test ebx, ebx
faddp st(1)
fld dword [esp + 0x38]
fmul dword [esp + 0x80]
faddp st(1)
fstp dword [esp + 0xe4]
fld dword [esp + 0x60]
fmul dword [esp + 0x9c]
fld dword [esp + 0x50]
fmul dword [esp + 0x98]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x94]
faddp st(1)
fld dword [esp + 0x30]
fmul dword [esp + 0x90]
faddp st(1)
fstp dword [esp + 0xec]
fld dword [esp + 0x64]
fmul dword [esp + 0x9c]
fld dword [esp + 0x54]
fmul dword [esp + 0x98]
faddp st(1)
fld dword [esp + 0x44]
fmul dword [esp + 0x94]
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x90]
faddp st(1)
fstp dword [esp + 0xf0]
fld dword [esp + 0x68]
fmul dword [esp + 0x9c]
fld dword [esp + 0x58]
fmul dword [esp + 0x98]
faddp st(1)
fld dword [esp + 0x48]
fmul dword [esp + 0x94]
faddp st(1)
fld dword [esp + 0x38]
fmul dword [esp + 0x90]
faddp st(1)
fstp dword [esp + 0xf4]
fld dword [esp + 0x60]
fmul dword [esp + 0xac]
fld dword [esp + 0x50]
fmul dword [esp + 0xa8]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0xa4]
faddp st(1)
fld dword [esp + 0x30]
fmul dword [esp + 0xa0]
faddp st(1)
fstp dword [esp + 0xfc]
fld dword [esp + 0x64]
fmul dword [esp + 0xac]
fld dword [esp + 0x54]
fmul dword [esp + 0xa8]
faddp st(1)
fld dword [esp + 0x44]
fmul dword [esp + 0xa4]
faddp st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0xa0]
faddp st(1)
fstp dword [esp + 0x100]
fld dword [esp + 0x68]
fmul dword [esp + 0xac]
fld dword [esp + 0x58]
fmul dword [esp + 0xa8]
faddp st(1)
fld dword [esp + 0x48]
fmul dword [esp + 0xa4]
faddp st(1)
fld dword [esp + 0x38]
fmul dword [esp + 0xa0]
faddp st(1)
fstp dword [esp + 0x104]
jle 0x456d3c
mov edx, dword [esp + 0xc0]
mov esi, dword [esp + 0xc8]
lea eax, [edx + 4]
mov edx, dword [esp + 0x20]
lea ecx, [edx + edx*2]
lea ecx, [esi + ecx*4 + 8]
mov esi, ebx
fld dword [esp + 0xec]
fmul dword [eax + 4]
fld dword [esp + 0xdc]
fmul dword [eax]
add ecx, 0xc
add eax, 0x20
dec esi
faddp st(1)
fld dword [esp + 0xcc]
fmul dword [eax - 0x24]
faddp st(1)
fadd dword [esp + 0xfc]
fld dword [esp + 0xf0]
fmul dword [eax - 0x1c]
fld dword [esp + 0xe0]
fmul dword [eax - 0x20]
faddp st(1)
fld dword [esp + 0xd0]
fmul dword [eax - 0x24]
faddp st(1)
fadd dword [esp + 0x100]
fstp dword [esp + 0xb4]
fld dword [esp + 0xf4]
fmul dword [eax - 0x1c]
fld dword [esp + 0xe4]
fmul dword [eax - 0x20]
mov edi, dword [esp + 0xb4]
faddp st(1)
fld dword [esp + 0xd4]
fmul dword [eax - 0x24]
mov dword [ecx - 0x10], edi
faddp st(1)
fadd dword [esp + 0x104]
fstp dword [esp + 0xb8]
mov edi, dword [esp + 0xb8]
fstp dword [ecx - 0x14]
mov dword [ecx - 0xc], edi
jne 0x456c8e
jmp 0x456d40
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
test esi, esi
jle 0x456d70
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0xc4]
lea ecx, [ecx + edi*2]
mov di, word [eax]
add eax, 2
add di, dx
mov word [ecx], di
add ecx, 2
dec esi
jne 0x456d5a
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
add edx, ebx
add eax, esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
inc ebp
cmp ebp, eax
jl 0x456949
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x456f67
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x456f67
mov edx, dword [esp + 0x18]
mov eax, dword [edx + 0x1c]
test eax, eax
jne 0x456db9
mov eax, 0x7e5658
mov ecx, dword [0x961908]
lea edx, [esp + 0x10c]
push ecx
push eax
push 0x82bcc4
push edx
call fcn.007a3155
mov ecx, dword [0x961908]
mov al, byte [esp + 0x3f]
add esp, 0x10
inc ecx
mov dword [0x961908], ecx
lea ecx, [esp + 0xb0]
push 0
mov byte [esp + 0xb4], al
call fcn.00404e60
lea edi, [esp + 0x10c]
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebp, ecx
lea ecx, [esp + 0xb4]
push ebp
call fcn.00401b40
test al, al
je 0x456e4d
mov edi, dword [esp + 0xb4]
mov ecx, ebp
mov edx, ecx
lea esi, [esp + 0x10c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0xb4]
call fcn.00405070
lea eax, [esp + 0xb0]
mov ecx, ebx
push eax
mov dword [esp + 0x218], 1
call fcn.0044a660
push 1
lea ecx, [esp + 0xb4]
mov dword [esp + 0x218], 0xffffffff
call fcn.00404e60
mov edi, dword [esp + 0x18]
push 0x8b1680
lea esi, [edi + 0x134]
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
test esi, esi
je 0x456f32
mov eax, dword [esi]
test eax, eax
je 0x456f32
add eax, 0x18
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, 0x8b1660
call fcn.00428a20
mov edx, dword [esp + 0x14]
mov eax, dword [0x8b1664]
cmp edx, eax
je 0x456f32
lea eax, [esp + 0x10]
push esi
push eax
mov ecx, 0x8b1670
call fcn.0042b0d0
mov eax, dword [esp + 0x10]
mov ecx, dword [0x8b1674]
cmp eax, ecx
je 0x456f2c
mov ecx, dword [eax + 0x10]
dec ecx
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x10]
test eax, eax
jne 0x456f2c
mov ecx, dword [esi]
test ecx, ecx
je 0x456f04
mov edx, dword [ecx]
push 1
call dword [edx + 4]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push eax
push ecx
mov ecx, 0x8b1660
call fcn.00428a00
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x28]
push edx
push eax
mov ecx, 0x8b1670
call fcn.00428ad0
mov dword [esi], 0
push 0x8b1680
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
push ebx
mov ecx, 0x8b1660
call fcn.00428870
push 0
add ebx, 0x18
push 1
push ebx
mov ecx, 0x8b1660
call fcn.0044e6f0
mov edx, dword [edi]
mov ecx, edi
mov dword [esi], eax
call dword [edx + 0x40]
mov al, 1
jmp 0x456f76
test ebx, ebx
je 0x456f74
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax + 4]
xor al, al
mov ecx, dword [esp + 0x20c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x208
ret