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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push esi
push edi
push ebx
sub esp, 0xd4
fldz
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x7c], edx
mov edx, ecx
mov eax, dword [ebx + 8]
and edx, 0x7fffffff
mov dword [esp + 0xb8], eax
mov eax, dword [ebx + 0xc]
mov edi, eax
mov dword [esp + 8], edx
xor ecx, eax
movzx eax, dx
and edi, 0x7fffffff
shr edx, 0x10
and ecx, 0x80000000
mov dword [esp + 0x5c], edi
mov edi, dword [esi]
mov esi, dword [esi + 4]
mov dword [esp + 0x54], esi
mov esi, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0xc0], esi
lea esi, [edx - 1]
fstp qword [esp + 0x80]
fld qword [esp + 0x80]
fstp st(0)
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x9c], ecx
movzx ecx, bx
shr ebx, 0x10
mov dword [esp + 0x58], ebx
mov dword [esp + 0x78], edi
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x7c]
cmp esi, 0x7ffd
ja 0x6620ef
mov esi, dword [esp + 0x58]
lea edi, [esi - 1]
cmp edi, 0x7ffd
ja 0x6620ef
sub edx, dword [esp + 0x58]
or eax, 0x10000
mov edi, dword [esp + 0x10]
mov ecx, ebx
or edi, 0x10000
sub ecx, dword [esp + 0xb8]
lea esi, [edx + 0x3ffd]
mov dword [esp + 0x98], esi
mov esi, eax
sub esi, edi
mov dword [esp + 0x10], edi
or ecx, esi
je 0x661e9e
mov esi, dword [esp + 0xb8]
sub esi, ebx
sbb edi, eax
jae 0x660f0e
mov esi, ebx
lea edx, [edx + 0x3ffe]
shr esi, 0x12
shl eax, 0xe
or esi, eax
mov eax, dword [esp + 0x54]
mov edi, eax
shl ebx, 0xe
shr edi, 0x12
or ebx, edi
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0x78]
mov edi, ebx
shr edi, 0x12
shl eax, 0xe
shl ebx, 0xe
or edi, eax
mov dword [esp + 0x78], ebx
mov dword [esp + 8], edi
mov dword [esp + 0x98], edx
mov ebx, dword [esp + 0x7c]
jmp 0x660f3f
mov esi, ebx
shr esi, 0x11
shl eax, 0xf
mov edx, dword [esp + 0x78]
mov edi, edx
mov ecx, dword [esp + 0x54]
or esi, eax
mov eax, ecx
shr edi, 0x11
shl ecx, 0xf
shl ebx, 0xf
or edi, ecx
shr eax, 0x11
shl edx, 0xf
or ebx, eax
mov dword [esp + 0x78], edx
mov dword [esp + 8], edi
mov edx, dword [esp + 0xb8]
mov ecx, edx
mov eax, dword [esp + 0xc]
mov edi, eax
mov dword [esp + 0xa0], esi
mov esi, dword [esp + 0x10]
shr ecx, 0x11
shl esi, 0xf
shl edx, 0xf
or ecx, esi
shr edi, 0x11
mov esi, dword [esp + 0xc0]
or edx, edi
mov edi, esi
shr edi, 0x11
shl eax, 0xf
shl esi, 0xf
or edi, eax
mov dword [esp + 0xb8], edx
sub edx, ebx
mov dword [esp + 0xc0], esi
mov esi, dword [esp + 0xa0]
mov dword [esp + 0xbc], ecx
sbb ecx, esi
mov dword [esp + 0xc8], edi
jb 0x660faa
or edx, ecx
jne 0x660fc2
mov eax, 0xffffffff
mov dword [esp + 0xcc], eax
mov dword [esp + 0xc4], eax
jmp 0x66112a
xor eax, eax
sub eax, ebx
mov edx, dword [esp + 0xbc]
sbb edx, esi
jb 0x660fd5
or eax, edx
jne 0x660fe2
mov dword [esp + 0xc4], 0xffffffff
jmp 0x661010
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
div dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xb8]
mul dword [esp + 0xc4]
mov edi, dword [esp + 8]
mov ecx, edi
sub ecx, eax
mov dword [esp + 4], ecx
sub edi, eax
jae 0x661037
mov dword [esp], 1
jmp 0x66103e
mov dword [esp], 0
mov eax, dword [esp + 0xbc]
mov edi, ebx
sub edi, edx
mov ecx, esi
sbb ecx, 0
mul dword [esp + 0xc4]
sub edi, eax
sbb ecx, edx
xor eax, eax
sub edi, dword [esp]
sbb ecx, 0
mov edx, ecx
sub edx, eax
jge 0x6610d4
mov dword [esp + 0x7c], ebx
mov dword [esp + 0xa0], esi
mov eax, dword [esp + 0xc4]
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0xb8]
add ebx, edx
mov esi, ebx
add eax, 0xffffffff
sub esi, edx
jae 0x661096
mov edx, 1
jmp 0x661098
xor edx, edx
mov dword [esp + 0xc4], eax
xor eax, eax
xor esi, esi
add edx, dword [esp + 0xbc]
adc esi, 0
add edi, edx
adc ecx, esi
mov edx, ecx
sub edx, eax
mov eax, dword [esp + 0xc4]
jl 0x66107d
mov dword [esp + 4], ebx
mov dword [esp + 0xc4], eax
mov esi, dword [esp + 0xa0]
mov ebx, dword [esp + 0x7c]
xor eax, eax
sub eax, dword [esp + 4]
mov edx, dword [esp + 0xbc]
sbb edx, edi
jb 0x6610e9
or eax, edx
jne 0x6610f6
mov dword [esp + 0xcc], 0xffffffff
jmp 0x66112a
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
div dword [esp + 0x2c]
mov dword [esp + 0x30], eax
xor eax, eax
or eax, dword [esp + 0x30]
mov dword [esp + 0xcc], eax
mov dword [esp + 0xa0], esi
mov esi, dword [esp + 0xc0]
mov eax, esi
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0xcc]
mul ebx
mov dword [esp + 0x64], eax
mov eax, esi
mov ecx, dword [esp + 0xc4]
mov edi, edx
mul ecx
mov dword [esp + 0x6c], eax
mov eax, ebx
mov esi, dword [esp + 0xc8]
mov dword [esp + 0x70], edx
mul esi
mov dword [esp + 0x74], eax
mov eax, ecx
mov dword [esp + 0x60], edx
mul esi
mov esi, dword [esp + 0xb8]
mov dword [esp + 0x5c], eax
mov eax, esi
mov dword [esp + 0x68], edx
mul ebx
mov dword [esp + 0x58], eax
mov eax, esi
mov dword [esp + 0x10], edx
mul ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 4], edx
mul ebx
add edi, dword [esp + 0x6c]
mov dword [esp + 0x54], eax
mov eax, 0
adc eax, 0
add edi, dword [esp + 0x74]
mov dword [esp], edx
mov edx, dword [esp + 0x64]
adc eax, 0
mov esi, dword [esp + 0xa0]
or edx, edi
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x70]
je 0x6611e2
mov dword [esp + 0x70], 1
jmp 0x6611ea
mov dword [esp + 0x70], 0
xor edx, edx
mov dword [esp + 0xa0], esi
xor esi, esi
sub esi, dword [esp + 0x64]
mov dword [esp + 0x8c], esi
mov esi, edx
sbb esi, edi
xor edi, edi
add ecx, dword [esp + 0x60]
mov dword [esp + 0x90], esi
adc edi, 0
add ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
adc edi, 0
add esi, eax
mov eax, edx
adc eax, 0
add ecx, esi
mov esi, dword [esp + 8]
adc edi, eax
mov eax, dword [esp + 0x68]
add eax, dword [esp + 0x10]
adc edx, 0
add eax, dword [esp + 0xc]
adc edx, 0
add eax, dword [esp + 0x54]
adc edx, 0
add eax, edi
adc edx, 0
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x78]
mov edi, edx
add ecx, dword [esp + 0x70]
sub edi, ecx
mov ecx, esi
sbb ecx, eax
mov eax, edi
sub eax, edx
mov edx, ecx
sbb edx, esi
mov esi, dword [esp + 0xa0]
jb 0x661275
or eax, edx
jne 0x661290
cmp dword [esp + 0x70], 0
je 0x66129a
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 8]
neg edx
neg eax
add edx, edi
add eax, ecx
or edx, eax
jne 0x66129a
mov dword [esp + 8], 1
jmp 0x6612a2
mov dword [esp + 8], 0
mov eax, dword [esp + 0xbc]
mul dword [esp + 0xc4]
sub ebx, dword [esp + 4]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp]
sbb esi, 0
add ecx, eax
adc edx, 0
xor eax, eax
sub ebx, ecx
mov ecx, dword [esp + 0x94]
sbb esi, edx
sub ebx, dword [esp + 0x6c]
sbb esi, 0
sub ebx, dword [esp + 8]
sbb esi, 0
mov edx, esi
sub edx, eax
jl 0x6618a3
mov edx, dword [esp + 0xb8]
sub edx, edi
mov eax, dword [esp + 0xbc]
sbb eax, ecx
jb 0x661303
or edx, eax
jne 0x66130f
mov esi, 0xffffffff
mov ebx, esi
jmp 0x66145e
xor eax, eax
sub eax, edi
mov edx, dword [esp + 0xbc]
sbb edx, ecx
jb 0x661322
or eax, edx
jne 0x661329
mov ebx, 0xffffffff
jmp 0x661350
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
div dword [esp + 0x3c]
mov dword [esp + 0x40], eax
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0xb8]
mul ebx
mov dword [esp], edx
mov edx, dword [esp + 0x90]
mov esi, edx
sub esi, eax
mov dword [esp + 4], esi
sub edx, eax
mov eax, dword [esp]
jae 0x66137b
mov dword [esp], 1
jmp 0x661382
mov dword [esp], 0
mov esi, edi
sub esi, eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x94], ecx
sbb ecx, 0
mul ebx
sub esi, eax
sbb ecx, edx
xor eax, eax
sub esi, dword [esp]
sbb ecx, 0
mov dword [esp + 8], ecx
sub ecx, eax
mov ecx, dword [esp + 0x94]
jge 0x661415
mov dword [esp + 0x94], ecx
mov dword [esp], edi
mov ecx, dword [esp + 8]
mov edi, dword [esp + 4]
mov eax, dword [esp + 0xb8]
add edi, eax
mov edx, edi
add ebx, 0xffffffff
sub edx, eax
jae 0x6613df
mov edx, 1
jmp 0x6613e1
xor edx, edx
xor eax, eax
add edx, dword [esp + 0xbc]
mov dword [esp + 0xa8], ebx
mov ebx, eax
adc ebx, 0
add esi, edx
adc ecx, ebx
mov edx, ecx
mov ebx, dword [esp + 0xa8]
sub edx, eax
jl 0x6613c6
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x94]
mov edi, dword [esp]
xor eax, eax
sub eax, dword [esp + 4]
mov edx, dword [esp + 0xbc]
sbb edx, esi
jb 0x66142a
or eax, edx
jne 0x661431
mov esi, 0xffffffff
jmp 0x66145e
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
div dword [esp + 0x4c]
mov dword [esp + 0x50], eax
xor esi, esi
or esi, dword [esp + 0x50]
mov eax, esi
mov edx, 4
and eax, 0x3fff
sub eax, edx
mov edx, 0
sbb edx, edx
jb 0x66147d
or eax, edx
jne 0x66179e
mov dword [esp], edi
mov edi, dword [esp + 0xc0]
mov eax, edi
mul esi
mov dword [esp + 0x64], eax
mov eax, edi
mov dword [esp + 0x94], ecx
mov ecx, edx
mul ebx
mov edi, dword [esp + 0xc8]
mov dword [esp + 0x78], eax
mov eax, edi
mov dword [esp + 0x74], edx
mul esi
mov dword [esp + 0x7c], eax
mov eax, edi
mov dword [esp + 0x60], edx
mul ebx
mov edi, dword [esp + 0xb8]
mov dword [esp + 0x5c], eax
mov eax, edi
mov dword [esp + 0x68], edx
mul esi
mov dword [esp + 0x58], eax
mov eax, edi
mov dword [esp + 0x10], edx
mul ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 4], edx
mul esi
add ecx, dword [esp + 0x78]
mov dword [esp + 0x54], eax
mov eax, 0
adc eax, 0
add ecx, dword [esp + 0x7c]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x64]
adc eax, 0
mov dword [esp + 0x6c], ecx
or edx, ecx
mov dword [esp + 0x70], eax
mov ecx, dword [esp + 0x94]
mov edi, dword [esp]
je 0x66152a
mov dword [esp + 0x7c], 1
jmp 0x661532
mov dword [esp + 0x7c], 0
xor edx, edx
mov dword [esp], edi
xor edi, edi
sub edi, dword [esp + 0x64]
mov dword [esp + 0xb4], esi
mov esi, edx
mov eax, dword [esp + 0x74]
sbb esi, dword [esp + 0x6c]
add eax, dword [esp + 0x60]
mov dword [esp + 0x94], ecx
mov ecx, edx
adc ecx, 0
add eax, dword [esp + 0x5c]
mov dword [esp + 0xac], edi
mov edi, dword [esp + 0x58]
adc ecx, 0
add edi, dword [esp + 0x70]
mov dword [esp + 0xb0], esi
mov esi, edx
adc esi, 0
add eax, edi
mov edi, dword [esp + 0x68]
adc ecx, esi
add edi, dword [esp + 0x10]
mov esi, dword [esp + 0x90]
adc edx, 0
add edi, dword [esp + 0xc]
adc edx, 0
add edi, dword [esp + 0x54]
adc edx, 0
add edi, ecx
mov ecx, dword [esp + 0x8c]
adc edx, 0
add eax, dword [esp + 0x7c]
mov dword [esp + 0x78], edx
mov edx, ecx
sub edx, eax
mov eax, esi
mov dword [esp + 0xa4], edx
sbb eax, edi
sub edx, ecx
mov dword [esp + 0xa0], eax
mov ecx, dword [esp + 0x94]
sbb eax, esi
mov edi, dword [esp]
mov esi, dword [esp + 0xb4]
jb 0x6615e9
or edx, eax
jne 0x661614
cmp dword [esp + 0x7c], 0
je 0x66161d
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x90]
neg edx
neg eax
add edx, dword [esp + 0xa4]
add eax, dword [esp + 0xa0]
or edx, eax
jne 0x66161d
mov dword [esp], 1
jmp 0x661624
mov dword [esp], 0
mov eax, dword [esp + 0xbc]
mul ebx
sub edi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0xb4], esi
sbb ecx, edx
xor esi, esi
xor edx, edx
add eax, dword [esp + 8]
adc edx, 0
sub edi, eax
sbb ecx, edx
sub edi, dword [esp + 0x78]
sbb ecx, 0
sub edi, dword [esp]
sbb ecx, 0
mov eax, ecx
sub eax, esi
mov esi, dword [esp + 0xb4]
jge 0x661773
mov edx, dword [esp + 0xb8]
add edx, 1
mov eax, dword [esp + 0xbc]
adc eax, 0
mov dword [esp], eax
mov dword [esp + 4], edx
add esi, 0xffffffff
mov dword [esp + 0xb4], esi
adc ebx, 0xffffffff
mov dword [esp + 0xa8], ebx
mov ebx, dword [esp + 0xc0]
mov esi, dword [esp + 0xac]
add esi, ebx
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0xb0]
adc edx, eax
mov dword [esp + 0xac], esi
sub esi, ebx
mov dword [esp + 0xb0], edx
mov ebx, dword [esp + 0xa8]
sbb edx, eax
mov esi, dword [esp + 0xb4]
jae 0x661711
mov eax, dword [esp + 0xa4]
add eax, dword [esp + 4]
mov edx, dword [esp + 0xa0]
adc edx, dword [esp]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], edx
sub eax, dword [esp + 0xb8]
sub edx, dword [esp + 0xbc]
or eax, edx
jne 0x66173b
jmp 0x661759
mov eax, dword [esp + 0xa4]
add eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xa0]
adc edx, dword [esp + 0xbc]
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa0], edx
mov eax, dword [esp + 0xa4]
sub eax, dword [esp + 0xb8]
mov edx, dword [esp + 0xa0]
sbb edx, dword [esp + 0xbc]
jae 0x661760
mov eax, 1
jmp 0x661762
xor eax, eax
add edi, eax
adc ecx, 0
xor eax, eax
mov edx, ecx
sub edx, eax
jl 0x661684
or edi, dword [esp + 0xa4]
or ecx, dword [esp + 0xa0]
or edi, dword [esp + 0xac]
or ecx, dword [esp + 0xb0]
or edi, ecx
je 0x66179a
mov eax, 1
jmp 0x66179c
xor eax, eax
or esi, eax
mov eax, esi
shl eax, 0x11
mov dword [esp + 0x58], eax
mov eax, ebx
mov ecx, dword [esp + 0xcc]
mov edx, ecx
shl eax, 0x11
shr esi, 0xf
shl edx, 0x11
or eax, esi
shr ebx, 0xf
mov esi, dword [esp + 0xc4]
or edx, ebx
mov ebx, esi
shl ebx, 0x11
shr ecx, 0xf
shr esi, 0xf
or ebx, ecx
mov dword [esp + 0x54], 0
mov dword [esp + 0xc4], esi
cmp dword [esp + 0x98], 0x7ffd
jae 0x6619f1
mov ecx, dword [esp + 0x54]
or ecx, dword [esp + 0x58]
je 0x661d52
fnstcw word [esp + 0x88]
mov esi, dword [0x7adc34]
mov edi, dword [0x7adc38]
mov ecx, dword [esp + 0x88]
fld qword [esi]
and ecx, 0xc00
fadd qword [edi]
fstp qword [esp + 0x80]
jne 0x661841
xor esi, esi
mov edi, dword [esp + 0x58]
sub edi, esi
jl 0x6619ac
jmp 0x66186e
cmp ecx, 0xc00
je 0x66186e
xor esi, esi
or esi, dword [esp + 0x9c]
je 0x661862
cmp ecx, 0x400
je 0x6619ac
jmp 0x66186e
cmp ecx, 0x800
je 0x6619ac
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov eax, dword [esp + 0x98]
shl eax, 0x10
add eax, dword [esp + 0xc4]
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x9c]
or edx, eax
mov dword [ecx + 8], ebx
mov dword [ecx + 0xc], edx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0xb8]
add edx, 1
mov eax, dword [esp + 0xbc]
adc eax, 0
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 0xa0], esi
mov dword [esp + 0x7c], ebx
mov eax, dword [esp + 0x90]
mov edx, dword [esp + 0x8c]
add dword [esp + 0xcc], 0xffffffff
mov ebx, dword [esp + 0xc0]
adc dword [esp + 0xc4], 0xffffffff
add edx, ebx
mov esi, edx
adc eax, dword [esp + 0xc8]
sub esi, ebx
mov ebx, eax
sbb ebx, dword [esp + 0xc8]
jae 0x661941
add edi, dword [esp + 4]
mov esi, edi
adc ecx, dword [esp]
mov ebx, ecx
sub esi, dword [esp + 0xb8]
sub ebx, dword [esp + 0xbc]
or esi, ebx
jne 0x66194f
add dword [esp + 0x7c], 1
mov ebx, dword [esp + 0xa0]
adc ebx, 0
xor esi, esi
mov dword [esp + 0xa0], ebx
sub ebx, esi
jl 0x6618d7
jmp 0x661999
add edi, dword [esp + 0xb8]
adc ecx, dword [esp + 0xbc]
mov ebx, edi
mov esi, ecx
sub ebx, dword [esp + 0xb8]
sbb esi, dword [esp + 0xbc]
jae 0x661988
add dword [esp + 0x7c], 1
mov ebx, dword [esp + 0xa0]
adc ebx, 0
xor esi, esi
mov dword [esp + 0xa0], ebx
sub ebx, esi
jl 0x6618d7
jmp 0x661e8b
xor ebx, ebx
mov esi, dword [esp + 0xa0]
sub esi, ebx
jl 0x6618d7
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], edx
jmp 0x661303
add eax, 1
mov esi, eax
adc edx, 0
or esi, edx
jne 0x6619c3
add ebx, 1
adc dword [esp + 0xc4], 0
mov edi, dword [esp + 0x54]
add edi, edi
mov esi, dword [esp + 0x58]
adc esi, esi
or edi, esi
jne 0x6619da
mov esi, 1
jmp 0x6619dc
xor esi, esi
test ecx, ecx
mov ecx, 0
sete cl
and ecx, esi
not ecx
and eax, ecx
jmp 0x66186e
fnstcw word [esp + 0x88]
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x10], ecx
and ecx, 0xc00
mov dword [esp + 4], ecx
jne 0x661a1f
xor ecx, ecx
mov esi, dword [esp + 0x58]
sub esi, ecx
jl 0x661e27
jmp 0x661a52
cmp dword [esp + 4], 0xc00
je 0x661a52
xor ecx, ecx
or ecx, dword [esp + 0x9c]
je 0x661a44
cmp dword [esp + 4], 0x400
je 0x661e19
jmp 0x661a52
cmp dword [esp + 4], 0x800
je 0x661e71
mov dword [esp], 0
cmp dword [esp + 0x98], 0x7ffd
jle 0x661aee
mov eax, dword [0x7adc3c]
cmp dword [esp + 4], 0xc00
fld qword [eax]
fmul st(0)
fstp qword [esp + 0x80]
je 0x661e0a
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
je 0x661aaa
cmp dword [esp + 4], 0x800
je 0x661dcb
mov eax, 1
jmp 0x661ab8
cmp dword [esp + 4], 0x400
je 0x661e06
shl eax, 4
mov esi, dword [ebp + 8]
mov edx, dword [eax + 0x7579d0]
mov ecx, dword [eax + 0x7579d4]
mov ebx, dword [eax + 0x7579d8]
mov eax, dword [eax + 0x7579dc]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
je 0x661e33
cmp dword [esp + 0x98], 0
jge 0x6617f6
cmp dword [esp + 0x98], 0xffffffff
jl 0x661b46
cmp dword [esp], 0
je 0x661b46
mov esi, 0xffffffff
mov edi, ebx
mov ecx, 0x1ffff
sub edi, esi
mov edi, dword [esp + 0xc4]
sbb edi, ecx
jb 0x661b46
mov edi, ebx
neg ecx
add ecx, dword [esp + 0xc4]
sub edi, esi
or edi, ecx
jne 0x661b50
mov ecx, eax
mov edi, edx
sub ecx, esi
sbb edi, esi
jae 0x661b50
mov dword [esp + 8], 1
jmp 0x661b58
mov dword [esp + 8], 0
mov esi, dword [esp + 0x98]
neg esi
mov ecx, esi
and ecx, 0x3f
mov dword [esp + 0xc], ecx
mov ecx, esi
neg ecx
and ecx, 0x3f
mov dword [esp + 0x98], esi
cmp esi, 0x40
jge 0x661c4c
mov esi, dword [esp + 0x54]
or esi, dword [esp + 0x58]
je 0x661b94
mov dword [esp], 1
jmp 0x661b9b
mov dword [esp], 0
cmp ecx, 0x1f
ja 0x661bb3
mov esi, edx
mov edi, eax
shld esi, eax, cl
shl edi, cl
mov dword [esp + 0x58], esi
mov dword [esp + 0x54], edi
jmp 0x661bc3
mov esi, eax
shl esi, cl
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x54]
or esi, dword [esp]
mov dword [esp + 0x54], esi
cmp ecx, 0x1f
ja 0x661bea
mov esi, dword [esp + 0xc4]
mov edi, ebx
shld esi, ebx, cl
shl edi, cl
mov dword [esp + 4], esi
mov dword [esp], edi
jmp 0x661bf9
mov esi, ebx
shl esi, cl
mov dword [esp], 0
mov dword [esp + 4], esi
cmp dword [esp + 0xc], 0x1f
ja 0x661c0d
mov esi, edx
mov ecx, dword [esp + 0xc]
shrd eax, edx, cl
shr esi, cl
jmp 0x661c17
mov eax, edx
xor esi, esi
mov ecx, dword [esp + 0xc]
shr eax, cl
mov edx, dword [esp + 4]
or eax, dword [esp]
or edx, esi
cmp dword [esp + 0xc], 0x1f
ja 0x661c35
mov esi, dword [esp + 0xc4]
shrd ebx, esi, cl
shr esi, cl
jmp 0x661c40
xor esi, esi
mov ebx, dword [esp + 0xc4]
shr ebx, cl
mov dword [esp + 0xc4], esi
jmp 0x661ce6
je 0x661d99
cmp dword [esp + 0x98], 0x80
jge 0x661ccd
or edx, dword [esp + 0x58]
or eax, edx
je 0x661c6e
mov eax, 1
jmp 0x661c70
xor eax, eax
cmp ecx, 0x1f
ja 0x661c8d
mov edx, dword [esp + 0xc4]
mov esi, ebx
shld edx, ebx, cl
shl esi, cl
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], esi
jmp 0x661c9d
mov edx, ebx
shl edx, cl
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], edx
or dword [esp + 0x54], eax
cmp dword [esp + 0xc], 0x1f
ja 0x661cbc
mov eax, ebx
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc4]
shrd eax, edx, cl
shr edx, cl
jmp 0x661cdd
mov ecx, dword [esp + 0xc]
xor edx, edx
mov eax, dword [esp + 0xc4]
shr eax, cl
jmp 0x661cdd
xor eax, eax
mov dword [esp + 0x54], 1
xor edx, edx
mov dword [esp + 0x58], eax
xor ebx, ebx
mov dword [esp + 0xc4], ebx
cmp dword [esp + 8], 0
je 0x661d89
mov ecx, dword [esp + 0x54]
or ecx, dword [esp + 0x58]
je 0x661d1c
mov ecx, dword [0x7adc38]
mov dword [esp + 0x98], 0
fld qword [ecx]
fmul st(0)
fstp qword [esp + 0x80]
jmp 0x661804
test byte [esp + 0x10], 0x10
jne 0x661d47
mov ecx, dword [0x7adc38]
mov esi, dword [0x7adc40]
mov dword [esp + 0x98], 0
fld qword [ecx]
fmul qword [esi]
fstp qword [esp + 0x80]
jmp 0x661d52
mov dword [esp + 0x98], 0
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x9c]
mov dword [ecx], eax
mov eax, dword [esp + 0x98]
shl eax, 0x10
mov dword [ecx + 4], edx
mov edx, dword [esp + 0xc4]
add edx, eax
or esi, edx
mov dword [ecx + 8], ebx
mov dword [ecx + 0xc], esi
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x98], 0
jmp 0x6617f6
mov ecx, dword [esp + 0x54]
or ecx, dword [esp + 0x58]
je 0x661dad
mov dword [esp + 0x54], 1
jmp 0x661db5
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], edx
or dword [esp + 0x54], eax
mov eax, ebx
mov edx, dword [esp + 0xc4]
jmp 0x661cdd
mov ebx, 1
shl ebx, 4
mov esi, dword [ebp + 8]
mov eax, dword [ebx + 0x7579f0]
mov edx, dword [ebx + 0x7579f4]
mov ecx, dword [ebx + 0x7579f8]
mov ebx, dword [ebx + 0x7579fc]
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x661dd0
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
jne 0x661dcb
jmp 0x661e06
mov ecx, dword [esp + 0x54]
or ecx, dword [esp + 0x58]
je 0x661a52
mov dword [esp], 1
jmp 0x661a59
mov esi, 0x1ffff
mov ecx, 0xffffffff
mov edi, ebx
neg esi
add esi, dword [esp + 0xc4]
sub edi, ecx
or edi, esi
jne 0x661af4
mov esi, eax
sub esi, ecx
neg ecx
add ecx, edx
or esi, ecx
jne 0x661af4
cmp dword [esp], 0
jne 0x661a6a
jmp 0x661af4
mov ecx, dword [esp + 0x54]
or ecx, dword [esp + 0x58]
je 0x661a52
mov dword [esp], 1
jmp 0x661a59
mov dword [esp + 0x90], eax
mov dword [esp + 0x8c], edx
jmp 0x66130f
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x54]
sub edi, dword [esp + 0xc0]
sub esi, dword [esp + 0xc]
or edi, esi
je 0x661ed3
mov esi, dword [esp + 0xc0]
sub esi, dword [esp + 0x78]
mov edi, dword [esp + 0xc]
sbb edi, dword [esp + 0x54]
jb 0x660ec6
jmp 0x660f0e
lea ebx, [edx + 0x3ffe]
cmp ebx, 0x7ffd
jg 0x662017
test ebx, ebx
js 0x661f18
mov ecx, dword [ebp + 8]
xor eax, eax
shl ebx, 0x10
add ebx, 0x10000
mov edx, dword [esp + 0x9c]
or edx, ebx
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], edx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp ebx, 0xffffffcf
jle 0x661f6a
mov ebx, dword [ebp + 8]
add edx, 0x402e
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 4], eax
cmp edx, 0x1f
ja 0x661f40
mov ecx, edx
mov ebx, 1
shld eax, ebx, cl
shl ebx, cl
jmp 0x661f4b
mov ecx, edx
xor ebx, ebx
mov eax, 1
shl eax, cl
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x9c]
or edx, eax
mov dword [ecx + 8], ebx
mov dword [ecx + 0xc], edx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp ebx, 0xffffff8f
jle 0x661fbf
add edx, 0x406e
cmp edx, 0x1f
ja 0x661f8e
xor eax, eax
mov ebx, 1
mov ecx, edx
xor esi, esi
mov eax, ebx
shld esi, ebx, cl
shl eax, cl
jmp 0x661f99
mov ecx, edx
mov esi, 1
shl esi, cl
xor eax, eax
mov edx, dword [ebp + 8]
mov dword [edx], eax
mov eax, dword [esp + 0x9c]
mov dword [edx + 4], esi
mov dword [edx + 8], 0
mov dword [edx + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
fnstcw word [esp + 0x88]
mov esi, dword [0x7adc38]
xor edx, edx
mov edi, dword [esp + 0x88]
xor eax, eax
and edi, 0xc00
fld qword [esi]
cmp edi, 0x800
mov ecx, dword [esp + 0x9c]
fmul st(0)
sete al
mov ebx, dword [ebp + 8]
fstp qword [esp + 0x80]
mov dword [ebx], eax
mov dword [ebx + 4], 0
mov dword [ebx + 8], edx
mov dword [ebx + 0xc], ecx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
fnstcw word [esp + 0x88]
mov eax, dword [0x7adc3c]
mov ecx, dword [esp + 0x88]
and ecx, 0xc00
fld qword [eax]
fmul st(0)
fstp qword [esp + 0x80]
cmp ecx, 0xc00
je 0x6620e0
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
je 0x662063
cmp ecx, 0x800
je 0x6620a1
mov eax, 1
jmp 0x66206b
cmp ecx, 0x400
je 0x6620dc
shl eax, 4
mov esi, dword [ebp + 8]
mov edx, dword [eax + 0x7579d0]
mov ecx, dword [eax + 0x7579d4]
mov ebx, dword [eax + 0x7579d8]
mov eax, dword [eax + 0x7579dc]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ebx, 1
shl ebx, 4
mov esi, dword [ebp + 8]
mov eax, dword [ebx + 0x7579f0]
mov edx, dword [ebx + 0x7579f4]
mov ecx, dword [ebx + 0x7579f8]
mov ebx, dword [ebx + 0x7579fc]
mov dword [esi], eax
mov dword [esi + 4], edx
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x6620a6
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
jne 0x6620a1
jmp 0x6620dc
mov esi, dword [esp + 0x78]
or esi, dword [esp + 0x54]
je 0x662102
mov dword [esp], 1
jmp 0x662109
mov dword [esp], 0
mov esi, dword [esp]
or esi, ebx
mov edi, dword [esp + 8]
mov dword [esp], esi
or edi, esi
jne 0x662122
mov dword [esp], 1
jmp 0x662165
mov esi, 0x10000
mov edi, dword [esp + 8]
sub edi, esi
jae 0x662138
mov dword [esp], 2
jmp 0x662165
mov esi, 0x7fff0000
mov edi, dword [esp + 8]
sub edi, esi
jae 0x66214e
mov dword [esp], 4
jmp 0x662165
mov esi, dword [esp]
or esi, edi
je 0x66215e
mov dword [esp], 0x10
jmp 0x662165
mov dword [esp], 8
mov esi, dword [esp + 0xc0]
or esi, dword [esp + 0xc]
je 0x66217c
mov dword [esp + 4], 1
jmp 0x662184
mov dword [esp + 4], 0
mov esi, dword [esp + 4]
or esi, dword [esp + 0xb8]
mov edi, dword [esp + 0x5c]
mov dword [esp + 4], esi
or edi, esi
jne 0x6621a2
mov edi, 1
jmp 0x6621de
mov esi, 0x10000
mov edi, dword [esp + 0x5c]
sub edi, esi
jae 0x6621b6
mov edi, 2
jmp 0x6621de
mov esi, 0x7fff0000
mov edi, dword [esp + 0x5c]
sub edi, esi
jae 0x6621ca
mov edi, 4
jmp 0x6621de
mov esi, dword [esp + 4]
or esi, edi
je 0x6621d9
mov edi, 0x10
jmp 0x6621de
mov edi, 8
mov esi, dword [esp]
or esi, edi
mov dword [esp + 4], esi
test esi, 0x10
je 0x66238a
cmp edi, dword [esp]
je 0x662258
cmp dword [esp], 0x10
je 0x66283b
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov eax, dword [ebx]
mov dword [edi], eax
mov edx, dword [ebx + 4]
mov dword [edi + 4], edx
mov ecx, dword [ebx + 8]
mov dword [edi + 8], ecx
mov esi, dword [ebx + 0xc]
mov dword [edi + 0xc], esi
mov eax, dword [ebp + 8]
xor ecx, ecx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov ebx, eax
and ebx, 0x8000
or ecx, ebx
jne 0x66236f
mov edx, dword [0x7adc44]
mov eax, dword [ebp + 8]
fld qword [edx]
fdiv st(0)
fstp qword [esp + 0x80]
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
jmp 0x66236f
mov eax, dword [ebp + 0xc]
xor edx, edx
mov ecx, dword [eax + 0xc]
and ecx, 0x8000
or ecx, edx
jne 0x662271
mov eax, 1
jmp 0x662273
xor eax, eax
mov edx, dword [ebp + 0x10]
xor ecx, ecx
mov esi, dword [edx + 0xc]
and esi, 0x8000
or esi, ecx
jne 0x66228c
mov edx, 1
jmp 0x66228e
xor edx, edx
mov ecx, eax
or ecx, edx
je 0x6622a5
mov ecx, dword [0x7adc44]
fld qword [ecx]
fdiv st(0)
fstp qword [esp + 0x80]
cmp edx, eax
je 0x6622d2
test eax, eax
jne 0x662353
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov edx, dword [ecx]
mov dword [ebx], edx
mov eax, dword [ecx + 4]
mov dword [ebx + 4], eax
mov edx, dword [ecx + 8]
mov dword [ebx + 8], edx
mov eax, dword [ecx + 0xc]
mov dword [ebx + 0xc], eax
jmp 0x66236f
mov eax, ebx
sub eax, dword [esp + 0xb8]
mov edx, dword [esp + 8]
sbb edx, dword [esp + 0x5c]
jb 0x662353
mov eax, dword [esp + 8]
mov edx, ebx
sub edx, dword [esp + 0xb8]
sub eax, dword [esp + 0x5c]
or edx, eax
jne 0x662326
mov eax, dword [esp + 0x78]
sub eax, dword [esp + 0xc0]
mov edx, dword [esp + 0x54]
sbb edx, dword [esp + 0xc]
jb 0x662353
mov eax, dword [esp + 0xc0]
sub eax, dword [esp + 0x78]
mov edx, dword [esp + 0xc]
sbb edx, dword [esp + 0x54]
jb 0x6622b1
jmp 0x66233d
mov eax, dword [esp + 0xb8]
sub eax, ebx
mov edx, dword [esp + 0x5c]
sbb edx, dword [esp + 8]
jb 0x6622b1
mov eax, dword [ebp + 0xc]
xor edx, edx
mov ecx, dword [eax + 0xc]
and ecx, 0x80000000
or edx, ecx
jne 0x6622b1
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov edx, dword [ecx]
mov dword [ebx], edx
mov eax, dword [ecx + 4]
mov dword [ebx + 4], eax
mov edx, dword [ecx + 8]
mov dword [ebx + 8], edx
mov eax, dword [ecx + 0xc]
mov dword [ebx + 0xc], eax
mov ecx, dword [ebp + 8]
or eax, 0x8000
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test dword [esp], edi
je 0x6623d8
test byte [esp], 2
jne 0x6623d8
mov eax, dword [0x7adc44]
mov edi, dword [ebp + 8]
mov edx, dword [0x757a10]
fld qword [eax]
fdiv st(0)
mov ecx, dword [0x757a14]
mov ebx, dword [0x757a18]
mov esi, dword [0x757a1c]
fstp qword [esp + 0x80]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], esi
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test byte [esp], 8
je 0x662444
test edi, 2
je 0x6623fc
mov eax, dword [0x7adc48]
mov edx, dword [0x7adc34]
fld qword [eax]
fmul qword [edx]
fstp qword [esp + 0x80]
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
je 0x66240e
mov eax, 1
shl eax, 4
mov esi, dword [ebp + 8]
mov edx, dword [eax + 0x7579d0]
mov ecx, dword [eax + 0x7579d4]
mov ebx, dword [eax + 0x7579d8]
mov eax, dword [eax + 0x7579dc]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test edi, 1
je 0x6624ae
mov eax, dword [0x7adc34]
xor ecx, ecx
mov edx, dword [0x7adc44]
mov ebx, dword [esp + 0x9c]
fld qword [eax]
or ebx, ecx
fdiv qword [edx]
fstp qword [esp + 0x80]
je 0x662476
mov eax, 1
jmp 0x662478
xor eax, eax
shl eax, 4
mov esi, dword [ebp + 8]
mov edx, dword [eax + 0x7579d0]
mov ecx, dword [eax + 0x7579d4]
mov ebx, dword [eax + 0x7579d8]
mov eax, dword [eax + 0x7579dc]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, dword [esp]
and edi, 8
and esi, 1
or esi, edi
je 0x662520
test byte [esp + 4], 2
je 0x6624d8
mov eax, dword [0x7adc48]
mov edx, dword [0x7adc34]
fld qword [eax]
fmul qword [edx]
fstp qword [esp + 0x80]
xor eax, eax
mov edx, dword [esp + 0x9c]
or edx, eax
je 0x6624ea
mov eax, 1
shl eax, 4
mov esi, dword [ebp + 8]
mov edx, dword [eax + 0x757a20]
mov ecx, dword [eax + 0x757a24]
mov ebx, dword [eax + 0x757a28]
mov eax, dword [eax + 0x757a2c]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, dword [0x7adc48]
mov edi, dword [0x7adc34]
cmp dword [esp + 0x58], 0
fld qword [esi]
fmul qword [edi]
fstp qword [esp + 0x80]
jne 0x662713
mov esi, dword [esp + 0xb8]
mov edi, ecx
mov dword [esp + 4], esi
or esi, edi
mov dword [esp], edi
jne 0x662572
mov esi, dword [esp + 0xc0]
mov edi, dword [esp + 0xc]
mov dword [esp + 4], esi
mov dword [esp], edi
mov dword [esp + 0x58], 0x31
jmp 0x66257a
mov dword [esp + 0x58], 0xfffffff1
mov esi, 1
sub edi, esi
jae 0x66258a
add dword [esp + 0x58], 0x20
jmp 0x662591
mov esi, dword [esp]
mov dword [esp + 4], esi
bsr esi, dword [esp + 4]
mov edi, dword [esp + 0x58]
sub edi, esi
add edi, 0x1f
mov dword [esp + 0x58], edi
cmp edi, 0x40
jge 0x662692
cmp dword [esp + 0x58], 0x1f
ja 0x6625cf
mov ecx, edi
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0x10]
shld edi, esi, cl
shl esi, cl
mov dword [esp + 0x10], edi
mov dword [esp + 8], esi
jmp 0x6625e6
mov ecx, edi
mov esi, dword [esp + 0xb8]
shl esi, cl
mov dword [esp + 8], 0
mov dword [esp + 0x10], esi
neg ecx
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x662615
mov dword [esp], eax
mov eax, dword [esp + 0xc]
mov edi, eax
mov esi, dword [esp + 0xc0]
shrd esi, eax, cl
shr edi, cl
mov eax, dword [esp]
mov dword [esp + 0xb8], esi
mov dword [esp + 4], edi
jmp 0x66262a
mov esi, dword [esp + 0xc]
shr esi, cl
mov dword [esp + 4], 0
mov dword [esp + 0xb8], esi
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 8]
or edi, dword [esp + 4]
or dword [esp + 0xb8], esi
mov dword [esp + 0x10], edi
cmp dword [esp + 0x58], 0x1f
ja 0x66266c
mov dword [esp], eax
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0xc0]
mov eax, dword [esp + 0xc]
shld eax, esi, cl
mov dword [esp + 0xc], eax
shl esi, cl
mov dword [esp + 4], esi
mov eax, dword [esp]
jmp 0x662685
mov ecx, dword [esp + 0x58]
mov esi, dword [esp + 0xc0]
shl esi, cl
mov dword [esp + 4], 0
mov dword [esp + 0xc], esi
mov esi, dword [esp + 4]
mov dword [esp + 0xc0], esi
jmp 0x662708
mov ecx, edi
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x6626b9
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0xc0]
shld edi, esi, cl
shl esi, cl
mov dword [esp + 0x10], edi
mov dword [esp + 0xb8], esi
jmp 0x6626d1
mov esi, dword [esp + 0xc0]
shl esi, cl
mov dword [esp + 0xb8], 0
mov dword [esp + 0x10], esi
cmp dword [esp + 0x58], 0x40
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0x10]
jne 0x6626ea
mov esi, dword [esp + 0xc0]
jne 0x6626f0
mov edi, dword [esp + 0xc]
mov dword [esp + 0xb8], esi
xor esi, esi
mov dword [esp + 0x10], edi
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x58]
neg esi
inc esi
mov dword [esp + 0x58], esi
test edx, edx
jne 0x660e80
mov edx, ebx
mov dword [esp + 4], ebx
or edx, eax
mov dword [esp], eax
jne 0x66273e
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x54]
mov dword [esp + 4], edx
mov edx, 0x31
mov dword [esp], ecx
jmp 0x662743
mov edx, 0xfffffff1
mov esi, 1
mov edi, dword [esp]
sub edi, esi
jae 0x662754
add edx, 0x20
jmp 0x66275b
mov esi, dword [esp]
mov dword [esp + 4], esi
bsr esi, dword [esp + 4]
sub edx, esi
add edx, 0x1f
cmp edx, 0x40
jge 0x6627f9
cmp edx, 0x1f
ja 0x66277f
mov ecx, edx
shld eax, ebx, cl
shl ebx, cl
mov dword [esp], ebx
jmp 0x66278c
mov ecx, edx
mov eax, ebx
mov dword [esp], 0
shl eax, cl
mov ecx, edx
neg ecx
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x6627ab
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0x54]
shrd ebx, esi, cl
shr esi, cl
mov dword [esp + 4], esi
jmp 0x6627b9
mov ebx, dword [esp + 0x54]
mov dword [esp + 4], 0
shr ebx, cl
or ebx, dword [esp]
or eax, dword [esp + 4]
cmp edx, 0x1f
ja 0x6627dd
mov ecx, edx
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x54]
shld edi, esi, cl
shl esi, cl
mov dword [esp + 0x54], edi
mov dword [esp], esi
jmp 0x6627f0
mov ecx, edx
mov esi, dword [esp + 0x78]
shl esi, cl
mov dword [esp], 0
mov dword [esp + 0x54], esi
mov esi, dword [esp]
mov dword [esp + 0x78], esi
jmp 0x662833
mov ecx, edx
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x662812
mov eax, dword [esp + 0x54]
mov ebx, dword [esp + 0x78]
shld eax, ebx, cl
shl ebx, cl
jmp 0x66281a
mov eax, dword [esp + 0x78]
xor ebx, ebx
shl eax, cl
cmp edx, 0x40
jne 0x662823
mov ebx, dword [esp + 0x78]
jne 0x662829
mov eax, dword [esp + 0x54]
xor esi, esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x54], esi
neg edx
inc edx
jmp 0x660e80
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, dword [ebx]
mov dword [edi], eax
mov edx, dword [ebx + 4]
mov dword [edi + 4], edx
mov ecx, dword [ebx + 8]
mov dword [edi + 8], ecx
mov esi, dword [ebx + 0xc]
mov dword [edi + 0xc], esi
jmp 0x66221e