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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x90
mov edi, dword [ebp + 0x10]
movsd xmm0, qword [ebp + 8]
mov eax, dword [0x6401e4]
xor eax, ebp
mov dword [esp + 0x88], eax
cmp edi, 2
jae 0x516b6c
lea esi, [esp + 0x68]
movsd qword [esi], xmm0
lea eax, [esp + 0x78]
mov ecx, esi
push eax
call 0x51739e
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi], eax
mov dword [esi + 8], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], eax
test edi, edi
je 0x516e18
xorps xmm0, xmm0
cvtsd2ss xmm0, qword [ebp + 8]
lea ecx, [esp + 0x48]
movss dword [ecx], xmm0
lea eax, [esp + 0x58]
push eax
push esi
call fcn.00517530
jmp 0x516e30
jne 0x517399
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
lea esi, [esp + 0x68]
movsd qword [esi], xmm0
lea edi, [esp + 0x78]
mov ecx, esi
push edi
call 0x51739e
mov eax, dword [edi + 8]
mov ecx, 0xffffff84
sub ecx, eax
mov edx, 0xffffffa0
sub edx, eax
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi], eax
mov dword [esi + 8], eax
mov ebx, esi
lea eax, [esp + 0x58]
push eax
push esi
push edx
push ecx
call fcn.00555f80
add esp, 0x10
mov esi, edi
mov edx, dword [edi + 4]
mov dword [esp + 0xc], edx
mov ecx, dword [ebx + 4]
mov eax, ecx
mul edx
mov dword [esp + 8], eax
mov edi, edx
mov esi, dword [esi]
mov eax, ecx
mul esi
mov ecx, esi
mov dword [esp], eax
mov dword [esp + 4], edx
lea eax, [esp + 0x68]
mov ebx, dword [eax]
mov eax, ebx
mul dword [esp + 0xc]
mov esi, edx
mov dword [esp + 0xc], eax
mov eax, ebx
mul ecx
xor ebx, ebx
add edx, dword [esp + 0xc]
setb bl
add edx, dword [esp]
lea eax, [esp + 0x78]
mov eax, dword [eax + 8]
mov ecx, 0
adc ebx, ecx
lea ecx, [esp + 0x68]
add eax, dword [ecx + 8]
imul ecx, eax, 0x4d1
mov dword [esp], ecx
add esi, dword [esp + 8]
mov ecx, 0
adc edi, ecx
add esi, dword [esp + 4]
adc edi, ecx
xor ecx, ecx
add edx, 0x80000000
adc esi, ebx
adc edi, ecx
mov ecx, 0xffffffc0
sub ecx, eax
xor ebx, ebx
inc ebx
xor eax, eax
shld eax, ebx, cl
shl ebx, cl
mov edx, esi
shrd edx, edi, cl
mov dword [esp + 8], edx
mov edx, edi
shr edx, cl
mov dword [esp + 0x10], ecx
test cl, 0x20
cmove edx, dword [esp + 8]
mov ecx, 0
cmovne eax, ebx
cmovne ebx, ecx
mov dword [esp + 0x2c], ebx
add ebx, 0xffffffff
mov dword [esp + 0x30], eax
adc eax, 0xffffffff
mov dword [esp + 0x20], eax
and edi, eax
mov dword [esp + 0x1c], ebx
and esi, ebx
mov eax, dword [esp]
add eax, 0x26d51
sar eax, 0xc
mov dword [esp + 4], edx
cmp dword [eax*4 + 0x5df020], edx
lea ecx, [eax + 1]
cmova ecx, eax
mov dword [esp + 0x48], ecx
mov eax, dword [ebp + 0x20]
xor edx, edx
mov dword [eax], edx
xor edx, edx
mov ebx, dword [ecx*4 + 0x5df01c]
mov dword [esp + 8], ecx
test ecx, ecx
jle 0x516d3b
mov dword [esp + 0x18], esi
mov dword [esp + 0xc], edi
mov dword [esp], 0
mov ecx, dword [ebp + 0x14]
mov edi, dword [esp + 4]
mov eax, edi
xor edx, edx
div ebx
add al, 0x30
mov esi, dword [esp]
mov edi, dword [ebp + 0x18]
mov byte [edi + esi], al
mov eax, dword [ebp + 0x20]
mov edi, dword [eax]
inc edi
mov esi, edi
mov dword [esp], edi
mov dword [eax], edi
mov edi, edx
cmp ecx, 1
je 0x51729c
dec ecx
mov eax, ebx
mov edx, 0xcccccccd
mul edx
mov eax, dword [esp + 8]
dec eax
mov ebx, edx
shr ebx, 3
mov dword [esp + 8], eax
inc eax
cmp eax, 1
jg 0x516cd9
mov dword [esp + 4], edi
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
mov edx, dword [esp]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x18]
mov dword [esp], edx
cmp dword [esp + 0x14], 0
mov ecx, 1
je 0x5172ab
xor eax, eax
cmp esi, 2
mov edx, edi
sbb edx, 0
jb 0x517329
mov edx, dword [esp + 0x14]
test edx, edx
mov ebx, dword [ebp + 0x20]
jle 0x51732c
mov dword [esp + 4], 0
mov dword [esp + 0x14], edx
mov eax, esi
mov edx, 0xa
mul edx
lea ebx, [edi + edi*4]
lea ebx, [edx + ebx*2]
mov dword [esp + 0xc], ebx
mov esi, eax
mov dword [esp + 0x18], eax
mov eax, ecx
mov ecx, dword [esp + 0x10]
shrd esi, ebx, cl
shr ebx, cl
mov edx, 0xa
mul edx
test cl, 0x20
cmove ebx, esi
add bl, 0x30
mov esi, dword [ebp + 0x18]
mov edi, dword [esp]
mov byte [esi + edi], bl
mov ebx, dword [ebp + 0x20]
mov ecx, dword [esp + 4]
lea esi, [ecx + ecx*4]
lea ecx, [edx + esi*2]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x14]
mov edi, dword [ebx]
inc edi
mov esi, edi
mov dword [esp], edi
mov esi, dword [esp + 0x18]
mov dword [ebx], edi
mov edi, dword [esp + 0xc]
and esi, dword [esp + 0x1c]
and edi, dword [esp + 0x20]
dec dword [esp + 8]
mov ecx, eax
cmp edx, 2
lea edx, [edx - 1]
jl 0x516e01
cmp ecx, esi
mov eax, dword [esp + 4]
sbb eax, edi
jb 0x516d75
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
test edx, edx
je 0x517366
xor eax, eax
jmp 0x51732c
lea ecx, [esp + 0x48]
movsd xmm0, qword [ebp + 8]
movsd qword [ecx], xmm0
lea eax, [esp + 0x58]
push eax
push esi
call fcn.00517416
xor eax, eax
lea ecx, [esp + 0x48]
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov dword [ecx + 8], eax
mov edi, ecx
mov eax, dword [esp + 0x80]
mov ecx, 0xffffff84
sub ecx, eax
mov edx, 0xffffffa0
sub edx, eax
lea eax, [esp + 0x44]
push eax
push edi
push edx
push ecx
call fcn.00555f80
add esp, 0x10
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x18], ecx
mov ebx, dword [edi + 4]
mov dword [esp + 4], ebx
mov eax, ebx
mul ecx
mov dword [esp], eax
mov ecx, edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x10], edx
mov eax, ebx
mul edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], edx
mov edi, dword [edi]
mov eax, edi
mov dword [esp + 8], edi
mul dword [esp + 0x18]
mov esi, edx
mov ebx, eax
mov eax, edi
mul dword [esp + 0x10]
xor eax, eax
add edx, ebx
setb al
add edx, dword [esp + 0xc]
mov edi, 0
adc eax, edi
mov edi, dword [esp + 0x80]
lea ebx, [esp + 0x48]
add edi, dword [ebx + 8]
mov dword [esp + 0x10], edi
imul edi, edi, 0x4d1
mov dword [esp + 0x18], edi
add esi, dword [esp]
mov edi, 0
adc ecx, edi
add esi, dword [esp + 0x14]
adc ecx, edi
xor ebx, ebx
mov edi, SysReAllocString
add edx, edi
adc esi, eax
mov dword [esp + 0x34], esi
adc ecx, ebx
xor edi, edi
mov dword [esp + 0x38], ecx
mov esi, dword [esp + 0x6c]
mov eax, esi
mov ecx, dword [esp + 4]
mul ecx
mov dword [esp + 0x14], eax
mov dword [esp], edx
mov ebx, dword [esp + 0x68]
mov eax, ebx
mul ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], eax
mov eax, esi
mov ecx, dword [esp + 8]
mul ecx
mov dword [esp + 0x1c], edx
mov esi, eax
mov eax, ebx
mul ecx
xor eax, eax
add edx, esi
setb al
add edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
adc eax, edi
mov dword [esp + 0x30], eax
mov edi, dword [esp + 0x5c]
mov eax, edi
mov ecx, dword [esp + 4]
mul ecx
mov dword [esp + 0x2c], eax
mov esi, edx
mov ebx, dword [esp + 0x58]
mov eax, ebx
mul ecx
mov ecx, edx
mov dword [esp + 4], eax
mov eax, edi
mul dword [esp + 8]
mov dword [esp + 0x24], edx
mov edi, eax
mov eax, ebx
mul dword [esp + 8]
xor eax, eax
add edx, edi
mov edi, 0
setb al
add edx, dword [esp + 4]
adc eax, edi
mov ebx, dword [esp + 0x24]
add ebx, dword [esp + 0x2c]
adc esi, edi
add ebx, ecx
adc esi, edi
mov ecx, SysReAllocString
add edx, ecx
adc ebx, eax
adc esi, edi
add ebx, 1
adc esi, edi
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x14]
mov eax, dword [esp]
adc eax, edi
add edx, dword [esp + 0xc]
adc eax, edi
add dword [esp + 0x20], ecx
adc edx, dword [esp + 0x30]
adc eax, edi
mov dword [esp], eax
mov ecx, ebx
mov dword [esp + 0x24], ebx
sub ecx, edx
mov eax, esi
sbb eax, dword [esp]
add ecx, 1
mov dword [esp + 0xc], ecx
adc eax, edi
mov dword [esp + 0x14], eax
mov ecx, 0xffffffc0
sub ecx, dword [esp + 0x10]
xor eax, eax
inc eax
xor edx, edx
shld edx, eax, cl
shl eax, cl
shrd ebx, esi, cl
mov dword [esp], ebx
mov ebx, esi
shr ebx, cl
mov dword [esp + 0x20], ecx
test cl, 0x20
cmove ebx, dword [esp]
cmovne edx, eax
cmovne eax, edi
mov dword [esp + 0x3c], eax
add eax, 0xffffffff
mov dword [esp + 0x40], edx
adc edx, 0xffffffff
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edx
and esi, edx
mov dword [esp + 8], esi
mov edx, dword [esp + 0x24]
and edx, eax
mov esi, dword [esp + 0x18]
add esi, 0x26d51
sar esi, 0xc
mov dword [esp], ebx
cmp dword [esi*4 + 0x5df020], ebx
lea ecx, [esi + 1]
cmova ecx, esi
mov ebx, dword [ebp + 0x20]
mov dword [ebx], edi
test ecx, ecx
mov dword [esp + 0x30], eax
jle 0x5170eb
mov dword [esp + 4], edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [ecx*4 + 0x5df01c]
xor esi, esi
mov eax, dword [esp]
xor edx, edx
mov ebx, ecx
div ecx
add al, 0x30
mov ecx, dword [ebp + 0x18]
mov byte [ecx + esi], al
mov eax, dword [ebp + 0x20]
mov esi, dword [eax]
inc esi
xor eax, eax
mov edi, edx
mov ecx, dword [esp + 0x20]
shld eax, edx, cl
mov dword [esp], edx
shl edi, cl
test cl, 0x20
cmovne eax, edi
mov ecx, 0
cmovne edi, ecx
add edi, dword [esp + 4]
adc eax, dword [esp + 8]
cmp edi, dword [esp + 0xc]
mov edx, eax
mov ecx, dword [esp + 0x14]
sbb edx, ecx
mov dword [esp + 0x10], esi
mov edx, dword [ebp + 0x20]
mov dword [edx], esi
jb 0x5170f5
mov eax, dword [esp + 0x1c]
cmp eax, 2
jl 0x517161
dec eax
mov dword [esp + 0x1c], eax
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
mov ecx, edx
shr ecx, 3
mov esi, dword [esp + 0x10]
jmp 0x517071
mov dword [esp + 0x10], 0
jmp 0x517169
xor edx, edx
mov ecx, dword [esp + 0x20]
shld edx, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne edx, ebx
mov dword [esp], edx
mov ecx, 0
cmovne ebx, ecx
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x34]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x28]
sbb ecx, dword [esp + 0x38]
mov dword [esp + 0x28], ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
xor esi, esi
push esi
push 1
push dword [esp + 8]
push ebx
push eax
push edi
push dword [esp + 0x2c]
push dword [esp + 0x28]
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [esp + 0x38]
call fcn.0051760f
add esp, 0x2c
mov ecx, dword [esp + 0x1c]
dec ecx
jmp 0x517288
xor ecx, ecx
xor edi, edi
mov edx, dword [esp + 4]
mov dword [esp + 0x1c], ecx
xor eax, eax
inc eax
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0x10]
mov dword [esp], edi
mov eax, edx
mov ecx, 0xa
mul ecx
lea edi, [ebx + ebx*4]
lea ebx, [edx + edi*2]
mov edi, eax
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 8], ebx
shrd edi, ebx, cl
shr ebx, cl
mov eax, dword [esp + 0x18]
mov edx, 0xa
mul edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xc]
mov edx, 0xa
mul edx
test cl, 0x20
cmove ebx, edi
add bl, 0x30
mov edi, dword [ebp + 0x18]
mov byte [edi + esi], bl
mov ebx, dword [esp + 8]
mov ecx, dword [esp]
lea esi, [ecx + ecx*4]
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + esi*2]
mov dword [esp], ecx
mov ecx, dword [esp + 0x14]
lea ecx, [ecx + ecx*4]
lea edi, [edx + ecx*2]
mov edx, dword [esp + 4]
mov ecx, dword [ebp + 0x20]
mov esi, dword [ecx]
inc esi
and ebx, dword [esp + 0x2c]
and edx, dword [esp + 0x30]
dec dword [esp + 0x1c]
mov dword [esp + 0xc], eax
cmp edx, eax
mov eax, ebx
mov ecx, edi
mov dword [esp + 0x14], edi
sbb eax, edi
mov edi, dword [esp]
mov eax, dword [ebp + 0x20]
mov dword [eax], esi
jae 0x51717c
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0x24]
sub ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x38]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
mov dword [esp + 4], edx
mul ebx
mov dword [esp + 0x10], eax
mov eax, ecx
imul ecx, dword [esp + 0x28]
add ecx, edx
imul ebx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
push edi
push eax
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [esp + 0x18]
push dword [esp + 0x18]
push dword [esp + 0x2c]
push dword [esp + 0x28]
push ebx
push dword [esp + 0x34]
push esi
call fcn.0051760f
add esp, 0x2c
mov ecx, dword [esp + 0x1c]
test al, al
je 0x51734c
sub ecx, dword [esp + 0x44]
mov ebx, dword [ebp + 0x20]
jmp 0x517338
mov eax, dword [esp + 8]
dec eax
mov dword [esp + 0x48], eax
mov esi, dword [esp + 0x18]
jmp 0x5172b3
mov dword [esp + 0xc], edi
mov edi, dword [esp + 4]
mov edx, ebx
mov ecx, dword [esp + 0x10]
shl edx, cl
mov dword [esp + 4], edx
test cl, 0x20
mov eax, 0
cmovne edx, eax
mov dword [esp + 8], edx
xor eax, eax
shld eax, ebx, cl
test cl, 0x20
cmovne eax, dword [esp + 4]
mov dword [esp + 4], eax
mov eax, edi
shl eax, cl
test cl, 0x20
mov ebx, eax
mov edx, 0
cmovne ebx, edx
mov edx, edi
xor edi, edi
shld edi, edx, cl
test cl, 0x20
cmovne edi, eax
add ebx, esi
adc edi, dword [esp + 0xc]
lea eax, [esp + 0x48]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
push eax
xor eax, eax
push eax
push 1
push dword [esp + 0x10]
push dword [esp + 0x18]
push edi
push ebx
push dword [esp + 0x1c]
call fcn.0051779d
add esp, 0x20
mov ebx, dword [ebp + 0x20]
test al, al
je 0x51734c
mov ecx, dword [esp + 0x48]
sub ecx, dword [esp + 0x58]
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp + 0x24]
add ecx, dword [ebx]
mov dword [eax], ecx
mov eax, dword [ebx]
mov byte [esi + eax], 0
mov bl, 1
jmp 0x51734e
xor ebx, ebx
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.00596351
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x18], esi
mov esi, dword [ebp + 0x18]
mov eax, ecx
mov ecx, esi
mov edx, dword [ebp + 0x1c]
lea esi, [esp + 0x48]
push esi
push dword [esp + 8]
push eax
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push edi
push dword [esp + 0x30]
push dword [esp + 0x1c]
call fcn.0051779d
add esp, 0x20
jmp 0x51732c
call fcn.0040fbf8
push ebp
mov ebp, esp
push edi
push esi
mov eax, dword [ecx + 4]
xor edx, edx
add edx, 0xffffffff
mov edx, 0x100000
adc edx, 0xffffffff
and edx, eax
mov esi, edx
or esi, 0x100000
mov edi, eax
shr edi, 0x14
and edi, 0x7ff
add edi, 0xfffffbcd
test eax, 0x7ff00000
cmove esi, edx
mov edx, 0xfffffbce
cmovne edx, edi
mov eax, dword [ebp + 8]
mov ecx, dword [ecx]
bt esi, 0x14
jae 0x5173ed
mov edi, esi
jmp 0x5173fe
mov edi, esi
shld edi, ecx, 1
add ecx, ecx
dec edx
bt esi, 0x13
mov esi, edi
jae 0x5173ef
shld edi, ecx, 0xb
shl ecx, 0xb
add edx, 0xfffffff5
mov dword [eax], ecx
mov dword [eax + 4], edi
mov dword [eax + 8], edx
pop esi
pop edi
pop ebp
ret 4