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

Disassembly:
sub esp, 0x138
push ebx
push ebp
mov ebp, dword [esp + 0x148]
mov ebx, dword [ebp + 4]
mov ecx, dword [ebp]
mov edx, ebx
shr edx, 1
mov eax, edx
shl eax, 4
sub eax, edx
add eax, eax
add eax, eax
push esi
add eax, eax
test bl, 1
push edi
lea esi, [ecx + eax - 0x78]
mov ecx, 0x1e
lea edi, [esp + 0xd0]
rep movsd dword es:[edi], dword [esi]
jne 0x4540f2
cmp eax, 0x100000
mov ecx, edx
jae 0x454073
lea eax, [edx - 1]
test edx, eax
jne 0x45407f
test edx, edx
je 0x45406c
lea ecx, [edx + edx]
jmp 0x45407f
mov ecx, 1
jmp 0x45407f
and ecx, 0x7ffffc00
add ecx, 0x400
cmp ecx, edx
jbe 0x4540ba
test ecx, ecx
mov eax, dword [ebp]
je 0x4540a6
mov edx, ecx
shl edx, 4
sub edx, ecx
add edx, edx
add edx, edx
add edx, edx
push edx
push eax
call fcn.0044d0b0
add esp, 8
mov dword [ebp], eax
jmp 0x4540ba
test eax, eax
je 0x4540ba
push eax
call fcn.0044d390
add esp, 4
mov dword [ebp], 0
mov eax, dword [ebp]
test eax, eax
je 0x4540f2
mov eax, dword [ebp + 4]
shr eax, 1
mov ecx, eax
shl ecx, 4
sub ecx, eax
mov eax, dword [ebp]
lea eax, [eax + ecx*8]
lea edx, [esp + 0xd0]
call fcn.00449b70
mov eax, dword [ebp + 4]
mov edx, eax
and edx, 0xfffffffe
add edx, 2
and eax, 1
xor edx, eax
mov dword [ebp + 4], edx
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
mov ebx, dword [esp + 0x14c]
shr eax, 1
mov ecx, eax
shl ecx, 4
sub ecx, eax
lea eax, [edx + ecx*8 - 0x78]
mov cl, byte [eax + 0x74]
mov edx, dword [ebx]
mov edx, dword [edx + 0x48]
mov byte [esp + 0x17], cl
lea ecx, [eax + 0x34]
push ecx
add eax, 0x60
push eax
mov ecx, ebx
call edx
test eax, eax
jne 0x45456f
mov eax, dword [ebp + 4]
mov edx, dword [ebp]
shr eax, 1
mov ecx, eax
shl ecx, 4
sub ecx, eax
lea eax, [edx + ecx*8]
lea esi, [eax - 0x6c]
mov ecx, 0xa
lea edi, [esp + 0xa8]
rep movsd dword es:[edi], dword [esi]
lea esi, [eax - 0x44]
mov ecx, 0xa
lea edi, [esp + 0x80]
rep movsd dword es:[edi], dword [esi]
xor esi, esi
test dword [ebx + 0x19c], 0xfffffffe
mov dword [esp + 0x1c], esi
jbe 0x4543da
fld1
fldz
mov eax, dword [ebx + 0x198]
mov dl, byte [esp + 0x154]
lea edi, [esi*4]
mov ecx, dword [edi + eax]
cmp byte [ecx + 0x215], dl
jne 0x4543bf
cmp byte [esp + 0x17], 0
je 0x4541b1
cmp byte [ecx + 0x260], 0
jne 0x4543bf
mov eax, dword [ebp + 4]
shr eax, 1
mov edx, eax
shl edx, 4
sub edx, eax
cmp byte [ecx + 0x217], 0
mov eax, dword [ebp]
lea edx, [eax + edx*8 - 0x78]
mov dword [esp + 0x18], edx
je 0x454261
mov eax, dword [ecx]
fstp st(0)
mov edx, dword [eax + 0x5c]
fstp st(0)
call edx
fld1
fldz
test al, al
je 0x4541f6
cmp byte [ebx + 0x260], 0
mov byte [esp + 0x16], 1
je 0x4541fb
mov byte [esp + 0x16], 0
cmp byte [esp + 0x16], 0
je 0x454340
mov eax, dword [ebx + 0x198]
mov esi, dword [edi + eax]
cmp byte [esi + 0x217], 0
je 0x454273
mov edx, dword [esi]
fstp st(0)
mov eax, dword [edx + 0x5c]
fstp st(0)
mov ecx, esi
call eax
fld1
test al, al
fldz
jne 0x454282
fxch st(1)
mov byte [esp + 0x44], 1
fst dword [esp + 0x20]
lea esi, [esp + 0x20]
fst dword [esp + 0x30]
fstp dword [esp + 0x40]
fst dword [esp + 0x24]
fst dword [esp + 0x28]
fst dword [esp + 0x2c]
fst dword [esp + 0x34]
fst dword [esp + 0x38]
fstp dword [esp + 0x3c]
jmp 0x45434b
cmp byte [ecx + 0x55], 0
jne 0x4541e8
cmp byte [ecx + 0xed], 0
jmp 0x4541e6
cmp byte [esi + 0x55], 0
jne 0x454282
cmp byte [esi + 0xed], 0
je 0x45422d
cmp byte [esi + 0x213], 0
jne 0x45422d
mov esi, dword [esi + 0x244]
test esi, esi
je 0x45422d
mov edx, dword [esi]
fxch st(1)
mov edx, dword [edx + 0x20]
fst dword [esp + 0x58]
fst dword [esp + 0x68]
lea eax, [esp + 0x58]
fstp dword [esp + 0x78]
push eax
lea ecx, [esp + 0x4c]
fst dword [esp + 0x60]
push ecx
fst dword [esp + 0x68]
mov ecx, esi
fst dword [esp + 0x6c]
mov byte [esp + 0x84], 1
fst dword [esp + 0x74]
fst dword [esp + 0x78]
fstp dword [esp + 0x7c]
call edx
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x50]
jge 0x45431d
mov ecx, dword [esp + 0x4c]
cmp ecx, dword [esp + 0x54]
jge 0x45431d
fld1
mov byte [esp + 0x44], 1
fst dword [esp + 0x20]
lea esi, [esp + 0x20]
fldz
fst dword [esp + 0x24]
fst dword [esp + 0x28]
fst dword [esp + 0x2c]
fst dword [esp + 0x34]
fst dword [esp + 0x38]
fstp dword [esp + 0x3c]
fst dword [esp + 0x30]
fstp dword [esp + 0x40]
jmp 0x45434b
test byte [esi + 8], 1
je 0x454329
push esi
call fcn.00452670
add esi, 0x1dc
mov ecx, 0xa
lea edi, [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
lea esi, [esp + 0x20]
jmp 0x45434b
fstp st(0)
lea esi, [esp + 0x80]
fstp st(0)
mov edi, dword [esp + 0x18]
add edi, 0x34
cmp byte [esp + 0x16], 0
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
je 0x45437e
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x198]
add ecx, ecx
add ecx, ecx
add eax, ecx
mov eax, dword [eax]
lea edx, [esp + 0x58]
push edx
call fcn.004560c0
jmp 0x454385
lea eax, [esp + 0xa8]
mov edi, dword [esp + 0x18]
mov esi, eax
add edi, 0xc
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebx + 0x198]
add ecx, ecx
add ecx, ecx
add eax, ecx
mov ecx, dword [eax]
push ebp
call fcn.004553a0
test eax, eax
jne 0x45456f
fldz
mov esi, dword [esp + 0x1c]
fld1
fxch st(1)
mov eax, dword [ebx + 0x19c]
add esi, 1
shr eax, 1
cmp esi, eax
mov dword [esp + 0x1c], esi
jb 0x45417a
fstp st(0)
fstp st(0)
mov ecx, dword [ebp + 4]
mov eax, ecx
shr eax, 1
je 0x45456d
lea esi, [eax - 1]
cmp esi, 0x1111111
jbe 0x45441c
mov eax, dword [ebp]
test eax, eax
je 0x454402
push eax
call fcn.0044d390
add esp, 4
and dword [ebp + 4], 1
mov dword [ebp], 0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x138
ret 0xc
mov ebx, 1
and ecx, ebx
cmp esi, eax
je 0x45456d
test ecx, ecx
je 0x4544a2
test esi, esi
je 0x45446d
mov edx, dword [ebp]
mov ecx, esi
shl ecx, 4
sub ecx, esi
add ecx, ecx
add ecx, ecx
add ecx, ecx
push ecx
push edx
call fcn.0044d0b0
add esp, 8
test eax, eax
mov dword [ebp], eax
jne 0x454486
and dword [ebp + 4], ebx
mov dword [ebp], 0
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x138
ret 0xc
mov eax, dword [ebp]
test eax, eax
je 0x454454
push eax
call fcn.0044d390
add esp, 4
mov dword [ebp], 0
jmp 0x454454
mov ecx, dword [ebp + 4]
and ecx, ebx
lea eax, [esi + esi]
or eax, ecx
mov dword [ebp + 4], eax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x138
ret 0xc
mov edx, esi
shl edx, 4
sub edx, esi
add edx, edx
add edx, edx
add edx, edx
cmp edx, 0x100000
jae 0x4544c8
cmp esi, ebx
mov edx, ebx
jb 0x4544d6
lea ecx, [ecx]
add edx, edx
cmp edx, esi
jbe 0x4544c0
jmp 0x4544d6
mov edx, esi
and edx, 0xfffffc00
add edx, 0x400
mov ecx, eax
shl ecx, 4
sub ecx, eax
add ecx, ecx
add ecx, ecx
add ecx, ecx
cmp ecx, 0x100000
jae 0x454525
cmp eax, ebx
jbe 0x45451f
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
jge 0x454503
fadd dword [0x567d50]
fstp dword [esp + 0x18]
mov edi, ebx
mov ecx, dword [esp + 0x18]
shr ecx, 0x17
sub ecx, 0x7f
shl edi, cl
cmp edi, eax
jae 0x454521
add edi, edi
mov eax, edi
jmp 0x45452f
mov edi, eax
mov eax, edi
jmp 0x45452f
and eax, 0x7ffffc00
add eax, 0x400
cmp eax, edx
je 0x454560
test edx, edx
je 0x45446d
mov ecx, dword [ebp]
mov eax, edx
shl eax, 4
sub eax, edx
add eax, eax
add eax, eax
add eax, eax
push eax
push ecx
call fcn.0044d0b0
add esp, 8
test eax, eax
mov dword [ebp], eax
je 0x454454
mov eax, dword [ebp + 4]
lea edx, [esi + esi]
and eax, ebx
or edx, eax
mov dword [ebp + 4], edx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x138
ret 0xc