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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov edx, dword [ebp + 0xc]
mov eax, dword [0x4ef418]
xor eax, ebp
mov dword [esp + 0x88], eax
xorpd xmm0, xmm0
test edx, edx
je 0x455480
mov ecx, dword [ebp + 0x10]
lea ebx, [ecx + edx]
movsd xmm1, qword [0x4dde00]
cmp ebx, 0x135
jg 0x455a7d
cmp ebx, 0xfffffebd
jl 0x455480
cmp edx, 0xf
jg 0x4555e1
cmp ecx, 0xffffffea
jae 0x4554a8
cmp ecx, 0x16
ja 0x4555c3
test edx, edx
jle 0x455474
xor eax, eax
xor esi, esi
inc esi
xor ecx, ecx
mov edx, dword [ebp + 8]
movsx edi, byte [edx + esi - 1]
mov ebx, edi
mov edx, 0xa
mul edx
sar ebx, 0x1f
add eax, edi
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2]
adc ecx, ebx
add eax, 0xffffffd0
adc ecx, 0xffffffff
cmp esi, dword [ebp + 0xc]
jge 0x455454
inc esi
mov edx, 0x99999999
cmp eax, edx
mov edx, ecx
mov edi, 0x19999999
sbb edx, edi
jb 0x455418
movd xmm0, eax
movd xmm1, ecx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x4da600]
subpd xmm0, xmmword [0x4da610]
haddpd xmm0, xmm0
mov eax, dword [ebp + 0x10]
mulsd xmm0, qword [eax*8 + 0x4e3c60]
movsd qword [esp + 0x58], xmm0
fld qword [esp + 0x58]
fstp xword [esp + 0x20]
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.0045bb2d
fld xword [esp + 0x20]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
neg ecx
mov dword [esp + 0x20], ecx
test edx, edx
jle 0x455515
xor eax, eax
xor ecx, ecx
inc ecx
xor edi, edi
mov edx, dword [ebp + 8]
movsx esi, byte [edx + ecx - 1]
mov ebx, esi
mov edx, 0xa
mul edx
sar ebx, 0x1f
add eax, esi
lea esi, [edi + edi*4]
lea edi, [edx + esi*2]
adc edi, ebx
add eax, 0xffffffd0
adc edi, 0xffffffff
cmp ecx, dword [ebp + 0xc]
jge 0x4554f5
inc ecx
mov edx, 0x99999999
cmp eax, edx
mov edx, edi
mov esi, 0x19999999
sbb edx, esi
jb 0x4554b9
movd xmm0, eax
movd xmm1, edi
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x4da600]
subpd xmm0, xmmword [0x4da610]
haddpd xmm0, xmm0
mov eax, dword [esp + 0x20]
divsd xmm0, qword [eax*8 + 0x4e3c60]
jmp 0x455480
xor edi, edi
xor ecx, ecx
xor esi, esi
jmp 0x455636
mov ecx, esi
jmp 0x455680
test edx, edx
jle 0x4555ac
mov dword [esp + 0xc], eax
xor eax, eax
xor esi, esi
inc esi
xor ebx, ebx
mov edx, dword [ebp + 8]
movsx edi, byte [edx + esi - 1]
mov dword [esp + 0x20], edi
mov edx, 0xa
mul edx
sar edi, 0x1f
add eax, dword [esp + 0x20]
lea ebx, [ebx + ebx*4]
lea ebx, [edx + ebx*2]
adc ebx, edi
add eax, 0xffffffd0
adc ebx, 0xffffffff
cmp esi, dword [ebp + 0xc]
jge 0x455588
inc esi
mov edx, 0x99999999
cmp eax, edx
mov edx, ebx
mov edi, 0x19999999
sbb edx, edi
jb 0x455548
movd xmm0, eax
movd xmm1, ebx
punpckldq xmm0, xmm1
punpckldq xmm0, xmmword [0x4da600]
subpd xmm0, xmmword [0x4da610]
haddpd xmm0, xmm0
mov eax, dword [esp + 0xc]
mulsd xmm0, qword [eax*8 + 0x4e3c60]
mulsd xmm0, qword [ecx*8 + 0x4e3c60]
jmp 0x455480
test ecx, ecx
js 0x4555d9
mov eax, 0xf
sub eax, edx
sub ecx, eax
cmp ecx, 0x16
jle 0x455539
test edx, edx
jle 0x455527
xor ecx, ecx
xor esi, esi
xor edi, edi
mov eax, dword [ebp + 8]
movsx edx, byte [eax + edi]
mov dword [esp + 0x20], edx
inc edi
mov eax, ecx
mov ecx, edx
mov edx, 0xa
mul edx
mov dword [esp + 0xc], edx
sar ecx, 0x1f
mov edx, eax
add edx, dword [esp + 0x20]
lea eax, [esi + esi*4]
mov esi, dword [esp + 0xc]
lea esi, [esi + eax*2]
adc esi, ecx
mov ecx, edx
add ecx, 0xffffffd0
adc esi, 0xffffffff
cmp edi, dword [ebp + 0xc]
jge 0x455636
mov eax, 0x99999999
cmp ecx, eax
mov eax, esi
mov edx, 0x19999999
sbb eax, edx
jb 0x4555e7
xor edx, edx
mov eax, edi
mov edi, dword [ebp + 0xc]
cmp eax, edi
jne 0x455b01
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0xc], 0
mov edi, ecx
test esi, 0xffc00000
jne 0x455532
mov eax, 0x1000
xor edx, edx
mov ecx, esi
shld ecx, edi, 0xa
shl edi, 0xa
add edx, 0xfffffff6
cmp esi, eax
mov esi, ecx
jb 0x455667
jmp 0x455680
shld ecx, edi, 1
add edi, edi
dec edx
test ecx, ecx
jns 0x455679
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edx
mov ecx, edx
neg cl
xor edx, edx
mov edi, dword [esp + 0xc]
shld edx, edi, cl
shl edi, cl
xor eax, eax
test cl, 0x20
cmovne edx, edi
mov dword [esp + 0x20], edx
cmovne edi, eax
cmp ebx, 0xfffffea4
jl 0x455480
movapd xmm0, xmmword [0x4ddce0]
lea eax, [esp + 0x78]
movupd xmmword [eax], xmm0
lea esi, [esp + 0x74]
mov dword [esi], 0xffffffff
push esi
push eax
push ebx
call fcn.00443580
add esp, 0xc
sub ebx, dword [esi]
mov dword [esp + 0xc], edi
je 0x455763
lea eax, [ebx - 1]
cmp eax, 6
ja case.default.0x455708
xor ecx, ecx
mov esi, 0x98968000
lea edx, [esi + 0x7698000]
mov dword [esp + 0x14], 4
jmp dword [eax*4 + 0x4e3d18]
xor ecx, ecx
add esi, 0x2f698000
setb cl
mov dword [esp + 0x14], 7
jmp 0x455791
xor ecx, ecx
add esi, 0x2ab98000
setb cl
mov dword [esp + 0x14], 0x11
jmp 0x455791
xor ecx, ecx
add esi, 0x61698000
setb cl
mov dword [esp + 0x14], 0xa
jmp 0x455791
xor ecx, ecx
add esi, 0x3a98000
setb cl
mov dword [esp + 0x14], 0xe
jmp 0x455791
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
jmp 0x455815
mov dword [esp + 0x14], 0x18
jmp 0x455791
mov esi, edx
jmp 0x455791
xor ecx, ecx
add esi, 0x5b8d8000
setb cl
mov dword [esp + 0x14], 0x14
mov eax, ecx
mov edx, dword [esp + 0x10]
imul eax, edx
mov dword [esp + 0x34], eax
mov eax, esi
mul edx
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x18]
imul ecx, edi
mov dword [esp + 0x10], edx
mov eax, esi
mul edi
add ecx, edx
mov edx, dword [esp + 0x14]
add dword [esp + 0x1c], edx
and eax, 0x80000000
add ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x10]
adc edx, dword [esp + 0x34]
add eax, 0x80000000
adc ecx, 0
mov dword [esp + 0x14], ecx
adc edx, 0
mov dword [esp + 0x10], edx
mov eax, 0x13
sub eax, dword [ebp + 0xc]
mov edx, dword [esp + 0xc]
mov edi, edx
add edi, 4
mov esi, dword [esp + 0x20]
mov ecx, esi
adc ecx, 0
cmp eax, ebx
cmovl esi, ecx
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x10]
cmovl edx, edi
mov dword [esp + 0xc], edx
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x7c]
mov eax, ecx
mul esi
mov ebx, edx
mov dword [esp + 0x10], eax
mov eax, ecx
mul edi
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], edx
mov ecx, dword [esp + 0x78]
mov eax, ecx
mul esi
mov esi, edx
mov dword [esp + 0x34], eax
mov eax, ecx
mul edi
xor ecx, ecx
add edx, dword [esp + 0x34]
setb cl
add edx, dword [esp + 0x18]
adc ecx, 0
add esi, dword [esp + 0x10]
adc ebx, 0
add esi, dword [esp + 0x14]
adc ebx, 0
add edx, 0x80000000
mov eax, dword [esp + 0x80]
mov edx, dword [esp + 0x1c]
lea edi, [edx + eax + 0x40]
adc esi, ecx
mov dword [esp + 0x10], esi
adc ebx, 0
xor edx, edx
mov eax, dword [esp + 0xc]
mov ecx, eax
mov esi, dword [esp + 0x20]
or ecx, esi
mov ecx, ebx
sete dl
xor edx, 9
add edx, eax
mov dword [esp + 0x3c], 0x400000
adc esi, 0
cmp ebx, 0x400000
mov eax, esi
mov ebx, edi
jb 0x455ab6
mov esi, ecx
mov ecx, edi
test esi, esi
mov edi, dword [esp + 0x10]
js 0x4558c7
shld esi, edi, 1
add edi, edi
dec ebx
test esi, esi
jns 0x4558bc
mov dword [esp + 0xc], esi
sub ecx, ebx
shld eax, edx, cl
shl edx, cl
xor esi, esi
test cl, 0x20
cmovne eax, edx
mov dword [esp + 0x20], eax
cmovne edx, esi
mov dword [esp + 0x10], edx
lea eax, [ebx + 0x472]
cmp ebx, 0xfffffb8f
cmovl eax, esi
cmp ebx, 0xfffffbc3
mov edx, 0x35
cmovl edx, eax
cmp edx, 3
jle 0x455b56
mov dword [esp + 0x1c], ebx
mov ebx, edi
mov eax, 0x40
sub eax, edx
mov edi, dword [esp + 0xc]
mov dword [esp + 0x14], eax
mov esi, edi
mov dword [esp + 0xc], edi
mov ecx, eax
shr esi, cl
test al, 0x20
mov ecx, esi
mov edx, 0
cmovne ecx, edx
mov dword [esp + 0x38], ecx
mov edx, ebx
mov ecx, eax
shrd edx, edi, cl
test al, 0x20
cmovne edx, esi
xor edi, edi
dec edi
shl edi, cl
test al, 0x20
mov esi, edi
mov ecx, 0
cmovne esi, ecx
mov ecx, 0xffffffff
cmove edi, ecx
not esi
and esi, ebx
not edi
and edi, dword [esp + 0xc]
mov ecx, eax
dec cl
mov eax, 8
xor ebx, ebx
shld ebx, eax, cl
shld edi, esi, 3
shl esi, 3
shl eax, cl
test cl, 0x20
cmovne ebx, eax
mov ecx, 0
cmovne eax, ecx
mov ecx, dword [esp + 0x14]
add dword [esp + 0x1c], ecx
mov dword [esp + 0x34], eax
mov ecx, eax
add ecx, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov eax, dword [esp + 0x20]
adc ebx, eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x40], ecx
cmp esi, ecx
mov ecx, dword [esp + 0x38]
mov eax, edi
sbb eax, ebx
setae al
movzx eax, al
add eax, edx
adc ecx, 0
cmp ecx, 0x200000
mov dword [esp + 0x44], ebx
jae 0x455a98
mov ebx, dword [esp + 0x1c]
cmp ebx, 0x3cb
jg 0x455a8b
mov dword [esp + 0xc], edi
cmp ebx, 0xfffffbce
jl 0x455ba9
xor esi, esi
dec esi
add esi, 1
mov edi, 0
adc edi, 0xfffff
and edi, ecx
sete dl
cmp ebx, 0xfffffbce
je 0x455a1d
or esi, edi
je 0x455b28
mov esi, dword [esp + 0x20]
cmp ebx, 0xfffffbce
sete dh
shl ebx, 0x14
add ebx, 0x43300000
test dh, dl
mov edx, 0
cmovne ebx, edx
xor edx, edx
dec edx
and eax, edx
mov edx, 0xfffff
and ecx, edx
or ecx, ebx
movd xmm0, ecx
movd xmm1, eax
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
sbb edx, esi
mov ecx, dword [esp + 0x14]
cmp eax, ecx
mov eax, dword [esp + 0xc]
sbb edx, eax
punpckldq xmm1, xmm0
jae 0x455a7d
cmp ecx, dword [esp + 0x40]
sbb eax, dword [esp + 0x44]
jb 0x455ae4
movapd xmm0, xmm1
jmp 0x455480
call fcn.004bba20
movsd xmm0, qword [0x4dde00]
jmp 0x455480
dec dword [esp + 0x3c]
mov edx, ecx
shrd eax, edx, 1
shr ecx, 1
inc dword [esp + 0x1c]
cmp dword [esp + 0x3c], edx
mov edx, ecx
jae 0x4559d7
jmp 0x455a9e
mov dword [esp + 0x20], ecx
mov esi, ecx
mov ecx, edi
mov edi, dword [esp + 0x10]
shld esi, edi, 0xa
shl edi, 0xa
mov dword [esp + 0x10], edi
add ebx, 0xfffffff6
test dword [esp + 0x20], 0xfffff000
mov dword [esp + 0x20], esi
jne 0x4558b4
jmp 0x455abe
movsd xmm0, qword [0x4dde00]
movdqa xmmword [esp + 0x20], xmm1
ucomisd xmm1, xmm0
jae 0x455480
jmp 0x455be7
mov edi, eax
xor eax, eax
mov edx, dword [ebp + 8]
cmp byte [edx + edi], 0x35
mov edx, 0
setge al
add ecx, eax
adc esi, 0
sub ebx, edi
mov dword [esp + 0xc], 4
jmp 0x455650
mov esi, ecx
shld ecx, eax, 1
add eax, eax
and esi, 0x80000
sete dl
cmp ebx, 0xfffffbd0
lea ebx, [ebx - 1]
jl 0x455a1d
test esi, esi
mov esi, dword [esp + 0x20]
jne 0x455a21
jmp 0x455b28
mov ecx, 4
sub ecx, edx
mov esi, edi
mov edi, dword [esp + 0xc]
shrd esi, edi, cl
shr edi, cl
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
shrd eax, edx, cl
add ebx, ecx
mov dword [esp + 0x1c], ebx
shr edx, cl
test cl, 0x20
cmovne esi, edi
mov ebx, esi
mov esi, 0
cmovne edi, esi
cmovne eax, edx
cmovne edx, esi
add eax, 9
mov dword [esp + 0x10], eax
adc edx, 0
mov dword [esp + 0x20], edx
mov eax, 0x3c
jmp 0x45591c
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
sbb eax, dword [esp + 0x20]
cmp ecx, dword [esp + 0x14]
sbb eax, dword [esp + 0xc]
xorpd xmm0, xmm0
movapd xmmword [esp + 0x20], xmm0
jae 0x455480
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
sbb dword [esp + 0xc], eax
jae 0x455480
movaps xmm0, xmmword [esp + 0x20]
movsd qword [esp + 0x50], xmm0
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
mov eax, ebx
shr eax, 0x14
and eax, 0x7ff
add eax, 0xfffffbcc
mov edx, ebx
shld edx, ecx, 1
mov dword [esp + 0xc], ecx
add ecx, ecx
and ecx, 0xfffffffe
mov dword [esp + 0x10], ecx
and edx, 0x1fffff
mov esi, 0xfffffffe
add esi, 2
mov edi, 0x1fffff
adc edi, 0
or edi, edx
or esi, ecx
test ebx, 0x7ff00000
mov ecx, 0xfffffbcd
cmovne ecx, eax
cmove edi, edx
cmove esi, dword [esp + 0x10]
mov dword [esp + 0x64], edi
or esi, 1
mov dword [esp + 0x60], esi
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], 0xffffffff
sub esp, 0x14
movups xmm0, xmmword [esp + 0x74]
movups xmmword [esp + 4], xmm0
mov eax, dword [ebp + 0x10]
mov dword [esp], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
call fcn.004c2da0
add esp, 0x14
test eax, eax
js 0x455cda
je 0x455cec
lea eax, [ebx - 0x80000000]
or eax, dword [esp + 0xc]
je 0x455ce4
mov eax, ebx
xor eax, 0x7ff00000
or eax, dword [esp + 0xc]
movsd xmm0, qword [0x4dde00]
je 0x455480
test ebx, ebx
js 0x455cbf
mov eax, dword [esp + 0xc]
add eax, 1
adc ebx, 0
jmp 0x455cc9
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
adc ebx, 0xffffffff
movd xmm1, ebx
movd xmm0, eax
punpckldq xmm0, xmm1
jmp 0x455480
movaps xmm0, xmmword [esp + 0x20]
jmp 0x455480
xorps xmm0, xmm0
jmp 0x455480
test byte [esp + 0xc], 1
je 0x455cda
mov eax, ebx
xor eax, 0x7ff00000
or eax, dword [esp + 0xc]
movsd xmm0, qword [0x4dde00]
je 0x455480
movaps xmm0, xmmword [esp + 0x20]
movsd qword [esp + 0x48], xmm0
test ebx, ebx
jns 0x455caf
mov eax, 0x7fffffff
and eax, dword [esp + 0x4c]
or eax, dword [esp + 0x48]
xorps xmm0, xmm0
je 0x455480
jmp 0x455caf