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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push edi
push esi
push ebx
sub esp, 0xb4
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov esi, dword [edx + 0xc]
mov eax, dword [edx + 8]
mov edi, dword [edx]
mov dword [esp + 0xa4], eax
mov eax, dword [edx + 4]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0xa8], eax
mov ebx, esi
and ebx, 0x7fffffff
mov dword [esp + 0x9c], edi
mov edi, dword [ecx + 8]
mov dword [esp + 0xc], edx
mov eax, edx
and eax, 0x7fffffff
mov dword [esp + 0x94], edi
mov edi, dword [ecx + 4]
mov ecx, dword [ecx]
mov dword [esp + 0x98], edi
mov edi, esi
mov dword [esp + 0x90], ecx
xor edi, edx
and edi, 0x80000000
movzx edx, bx
mov dword [esp + 0x8c], edi
mov edi, ebx
mov dword [esp + 0xb0], edx
shr edi, 0x10
mov dword [esp + 0xa0], edi
movzx ecx, ax
mov dword [esp + 0xac], ecx
mov edx, eax
shr edx, 0x10
lea edi, [edi - 1]
cmp edi, 0x7ffd
ja 0x4aae40
lea edi, [edx - 1]
cmp edi, 0x7ffd
ja 0x4aae40
mov esi, dword [esp + 0xa0]
mov eax, dword [esp + 0xb0]
mov edi, dword [esp + 0xac]
mov ecx, dword [esp + 0x98]
lea ebx, [esi + edx - 0x4000]
mov esi, dword [esp + 0x90]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x9c]
or eax, 0x10000
mov dword [esp + 0xb0], eax
mov eax, ebx
mul esi
or edi, 0x10000
mov dword [esp], eax
mov eax, ebx
mov dword [esp + 4], edx
mul ecx
mov dword [esp + 8], eax
mov eax, ebx
mov dword [esp + 0xc], edx
mul dword [esp + 0x94]
mov dword [esp + 0x2c], eax
mov eax, ebx
mov ebx, dword [esp + 0xa8]
mov dword [esp + 0x24], edx
mul edi
mov dword [esp + 0x30], eax
mov eax, esi
mov dword [esp + 0x28], edx
mul ebx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edx
mov eax, ecx
mul ebx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x40], edx
mul ebx
mov dword [esp + 0x44], eax
mov eax, edi
mov dword [esp + 0x48], edx
mul ebx
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], edx
mov eax, esi
mul ebx
mov dword [esp + 0x54], eax
mov eax, ecx
mov dword [esp + 0x58], edx
mul ebx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x60], edx
mul ebx
mov dword [esp + 0x64], eax
mov eax, edi
mov dword [esp + 0x68], edx
mul ebx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x20], edx
mov eax, esi
mov esi, dword [esp + 0xb0]
mul esi
mov dword [esp + 0x70], edx
mov ebx, eax
mov eax, ecx
mul esi
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x78], edx
mul esi
mov dword [esp + 0x7c], eax
mov eax, edi
mov dword [esp + 0x80], edx
mul esi
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], edx
mov edx, dword [esp + 4]
xor edi, edi
add edx, dword [esp + 8]
adc edi, 0
add edx, dword [esp + 0x34]
adc edi, 0
xor esi, esi
add ecx, dword [esp + 0x2c]
adc esi, 0
mov dword [esp + 4], edx
xor eax, eax
mov edx, dword [esp + 0x38]
add edx, dword [esp + 0x3c]
adc eax, 0
add ecx, edx
adc esi, eax
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x24]
add edx, edi
mov edi, 0
adc edi, 0
add ecx, edx
mov edx, dword [esp + 0x40]
adc esi, edi
add eax, dword [esp + 0x30]
mov dword [esp + 0xc], ecx
mov ecx, 0
adc ecx, 0
xor edi, edi
add edx, dword [esp + 0x44]
adc edi, 0
add eax, edx
adc ecx, edi
mov edx, dword [esp + 0x58]
xor edi, edi
add edx, dword [esp + 0x5c]
adc edi, 0
add ebx, esi
mov esi, 0
adc esi, 0
add edx, ebx
adc edi, esi
mov esi, dword [esp + 0x28]
add eax, edx
mov ebx, dword [esp + 0x4c]
adc ecx, edi
xor edi, edi
add esi, dword [esp + 0x48]
mov dword [esp + 0x24], eax
adc edi, 0
xor eax, eax
add ebx, dword [esp + 0x60]
adc eax, 0
add esi, ebx
adc edi, eax
mov eax, dword [esp + 0x64]
xor edx, edx
add eax, dword [esp + 0x70]
adc edx, 0
mov ebx, dword [esp + 0x74]
add ebx, ecx
mov ecx, 0
adc ecx, 0
add eax, ebx
adc edx, ecx
add esi, eax
adc edi, edx
mov ebx, dword [esp + 0x50]
xor ecx, ecx
xor eax, eax
add ebx, dword [esp + 0x68]
adc ecx, 0
mov edx, dword [esp + 0x6c]
add edx, dword [esp + 0x78]
adc eax, 0
add ebx, edx
adc ecx, eax
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x84]
add edx, edi
mov edi, 0
adc edi, 0
add ebx, edx
adc ecx, edi
xor edx, edx
mov edi, dword [esp + 0x20]
add edi, dword [esp + 0x80]
adc edx, 0
add eax, ecx
mov ecx, dword [esp + 0x88]
adc ecx, 0
add edi, eax
mov eax, dword [esp + 0x24]
adc edx, ecx
mov ecx, dword [esp + 0xc]
or ecx, dword [esp + 4]
or ecx, dword [esp]
mov dword [esp + 0x20], edi
test dl, 2
je 0x4aa91d
inc dword [esp + 0x1c]
mov dword [esp + 0xc], ecx
shl edx, 0xf
mov ecx, edi
mov edi, ecx
shr edi, 0x11
or edx, edi
shl ecx, 0xf
mov edi, ebx
shr edi, 0x11
or ecx, edi
mov dword [esp + 0x20], ecx
shl ebx, 0xf
mov ecx, esi
shr ecx, 0x11
or ebx, ecx
shl esi, 0xf
mov edi, eax
shr edi, 0x11
or esi, edi
shl eax, 0xf
mov edi, dword [esp + 0xc]
mov ecx, 1
test edi, edi
cmovne edi, ecx
or eax, edi
jmp 0x4aa962
mov dword [esp + 0xc], ecx
mov ecx, edi
shl edx, 0x10
mov edi, ecx
shr edi, 0x10
or edx, edi
shl ecx, 0x10
mov edi, ebx
shr edi, 0x10
or ecx, edi
shl ebx, 0x10
mov dword [esp + 0x20], ecx
mov ecx, esi
shr ecx, 0x10
or ebx, ecx
shl esi, 0x10
mov edi, eax
shr edi, 0x10
or esi, edi
mov edi, dword [esp + 0xc]
shl eax, 0x10
mov ecx, 1
test edi, edi
cmovne edi, ecx
or eax, edi
cmp dword [esp + 0x1c], 0x7ffd
jae 0x4aaa38
test eax, eax
je 0x4aad23
fnstcw word [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov edi, dword [0x4e2c78]
movsd xmm0, qword [edi]
mov edi, dword [0x4e2c7c]
addsd xmm0, qword [edi]
movsd qword [esp + 0x10], xmm0
and ecx, 0xc00
jne 0x4aa9a8
test eax, eax
jl 0x4aa9fd
jmp 0x4aa9cc
cmp ecx, 0xc00
je 0x4aa9cc
cmp dword [esp + 0x8c], 0
je 0x4aa9c4
cmp ecx, 0x400
je 0x4aa9fd
jmp 0x4aa9cc
cmp ecx, 0x800
je 0x4aa9fd
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x20]
mov dword [eax], esi
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
shl ebx, 0x10
add ebx, edx
mov edx, dword [esp + 0x8c]
or edx, ebx
mov dword [eax + 0xc], edx
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
inc esi
jne 0x4aaa1a
inc ebx
jne 0x4aaa1a
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x20]
lea edi, [edx + 1]
inc esi
cmove edx, edi
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x28]
xor edi, edi
test ecx, ecx
mov ecx, 1
cmove edi, ecx
add eax, eax
mov eax, 0
cmove eax, ecx
and edi, eax
not edi
and esi, edi
jmp 0x4aa9cc
fnstcw word [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], ecx
and ecx, 0xc00
jne 0x4aaa53
mov edi, eax
shr edi, 0x1f
jmp 0x4aaa81
cmp ecx, 0xc00
je 0x4aaa7f
cmp dword [esp + 0x8c], 0
je 0x4aaa73
cmp ecx, 0x400
je 0x4aade6
jmp 0x4aaa7f
cmp ecx, 0x800
je 0x4aae2e
xor edi, edi
cmp dword [esp + 0x1c], 0x7ffd
jle 0x4aab12
mov eax, dword [0x4e2c80]
movsd xmm0, qword [eax]
mulsd xmm0, xmm0
movsd qword [esp + 0x10], xmm0
cmp ecx, 0xc00
je 0x4aadb4
cmp dword [esp + 0x8c], 0
je 0x4aaac6
cmp ecx, 0x800
je 0x4aadb4
jmp 0x4aaad2
cmp ecx, 0x400
je 0x4aadb4
mov esi, dword [esp + 0x8c]
mov ebx, dword [ebp + 8]
shr esi, 0x1b
mov eax, dword [esi + 0x4dc550]
mov dword [ebx], eax
mov edx, dword [esi + 0x4dc554]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 0x4dc558]
mov dword [ebx + 8], ecx
mov edx, dword [esi + 0x4dc55c]
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], edx
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x1c], 0x7ffd
je 0x4aadf8
cmp dword [esp + 0x1c], 0
jge 0x4aa970
cmp dword [esp + 0x1c], 0xffffffff
jl 0x4aab5a
test edi, edi
je 0x4aab5a
cmp edx, 0x1ffff
jb 0x4aab5a
jne 0x4aab64
cmp dword [esp + 0x20], 0xffffffff
jb 0x4aab5a
cmp dword [esp + 0x20], 0xffffffff
jne 0x4aab64
cmp ebx, 0xffffffff
jb 0x4aab5a
jne 0x4aab64
cmp esi, 0xffffffff
jae 0x4aab64
mov dword [esp + 4], 1
jmp 0x4aab6c
mov dword [esp + 4], 0
mov edi, dword [esp + 0x1c]
neg edi
mov dword [esp + 0x1c], edi
mov ecx, edi
neg ecx
cmp edi, 0x20
mov dword [esp + 8], ecx
jge 0x4aabe4
mov dword [esp], edx
mov edx, ecx
mov ecx, edx
mov edi, esi
shl edi, cl
mov ecx, 1
test eax, eax
cmovne eax, ecx
mov ecx, edx
or eax, edi
mov edi, ebx
shl edi, cl
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr esi, cl
mov ecx, edx
or esi, edi
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x20]
mov edi, esi
shl edi, cl
mov ecx, eax
shr ebx, cl
mov ecx, edx
mov edx, dword [esp]
or ebx, edi
mov edi, edx
shl edi, cl
mov ecx, eax
shr esi, cl
shr edx, cl
mov eax, dword [esp + 0x24]
or esi, edi
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x28]
jmp 0x4aacc1
je 0x4aad99
cmp dword [esp + 0x1c], 0x40
jge 0x4aac3d
mov edi, ebx
shl edi, cl
mov dword [esp], edi
mov edi, dword [esp + 0x20]
or esi, eax
mov eax, 0
mov esi, 1
cmovne eax, esi
mov esi, edi
shl esi, cl
or eax, dword [esp]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov ecx, eax
shr ebx, cl
or esi, ebx
mov ebx, edx
mov ecx, dword [esp + 8]
shl ebx, cl
mov ecx, eax
shr edi, cl
shr edx, cl
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], edx
or ebx, edi
jmp 0x4aacbf
je 0x4aad7d
cmp dword [esp + 0x1c], 0x60
jge 0x4aac79
mov edi, dword [esp + 0x20]
shl edi, cl
or esi, ebx
or esi, eax
mov ebx, dword [esp + 0x20]
mov eax, 0
mov esi, 1
cmovne eax, esi
mov esi, edx
shl esi, cl
mov ecx, dword [esp + 0x1c]
shr ebx, cl
or eax, edi
or esi, ebx
mov ebx, edx
shr ebx, cl
jmp 0x4aacb7
je 0x4aad61
cmp dword [esp + 0x1c], 0x80
jge 0x4aacae
or ebx, dword [esp + 0x20]
mov edi, edx
shl edi, cl
mov ecx, dword [esp + 0x1c]
or ebx, esi
or ebx, eax
mov eax, 0
mov ebx, 1
cmovne eax, ebx
mov esi, edx
shr esi, cl
or eax, edi
jmp 0x4aacb5
mov eax, 1
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x20], 0
xor edx, edx
cmp dword [esp + 4], 0
je 0x4aad54
test eax, eax
je 0x4aacf1
mov ecx, dword [0x4e2c7c]
movsd xmm0, qword [ecx]
mulsd xmm0, xmm0
movsd qword [esp + 0x10], xmm0
mov dword [esp + 0x1c], 0
jmp 0x4aa978
test byte [esp + 0xc], 0x10
jne 0x4aad1b
mov eax, dword [0x4e2c7c]
mov ecx, dword [0x4e2c84]
movsd xmm0, qword [eax]
mulsd xmm0, qword [ecx]
movsd qword [esp + 0x10], xmm0
mov dword [esp + 0x1c], 0
jmp 0x4aad23
mov dword [esp + 0x1c], 0
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x20]
mov dword [eax], esi
mov dword [eax + 4], ebx
mov ebx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
shl ebx, 0x10
add ebx, edx
mov edx, dword [esp + 0x8c]
or edx, ebx
mov dword [eax + 0xc], edx
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x1c], 0
jmp 0x4aa970
or esi, ebx
mov ecx, 1
or esi, eax
mov eax, 0
cmovne eax, ecx
or eax, dword [esp + 0x20]
mov esi, edx
jmp 0x4aacb5
mov ecx, 1
or esi, eax
mov eax, 0
cmovne eax, ecx
or eax, ebx
mov ebx, edx
mov esi, dword [esp + 0x20]
jmp 0x4aacb7
mov ecx, 1
test eax, eax
cmovne eax, ecx
or eax, esi
mov esi, ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
jmp 0x4aacbf
mov esi, dword [esp + 0x8c]
mov ebx, dword [ebp + 8]
shr esi, 0x1b
mov eax, dword [esi + 0x4dc590]
mov dword [ebx], eax
mov edx, dword [esi + 0x4dc594]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 0x4dc598]
mov dword [ebx + 8], ecx
mov edx, dword [esi + 0x4dc59c]
jmp 0x4aaaff
test eax, eax
je 0x4aaa7f
mov edi, 1
jmp 0x4aaa81
cmp edx, 0x1ffff
jne 0x4aa970
cmp dword [esp + 0x20], 0xffffffff
jne 0x4aa970
cmp ebx, 0xffffffff
jne 0x4aa970
cmp esi, 0xffffffff
jne 0x4aa970
test edi, edi
jne 0x4aaa8f
jmp 0x4aa970
test eax, eax
je 0x4aaa7f
mov edi, 1
jmp 0x4aaa81
mov edi, dword [esp + 0xa4]
or edi, dword [esp + 0xa8]
xor ecx, ecx
or edi, dword [esp + 0x9c]
mov edi, 1
cmovne ecx, edi
or ecx, ebx
jne 0x4aae75
mov dword [esp + 8], 0
mov dword [esp + 4], 1
jmp 0x4aaebf
cmp ecx, 0x10000
jae 0x4aae8c
mov edi, 2
mov dword [esp + 8], edi
mov dword [esp + 4], edi
jmp 0x4aaebf
cmp ecx, 0x7fff0000
jae 0x4aaea6
mov dword [esp + 8], 0
mov dword [esp + 4], 4
jmp 0x4aaebf
mov dword [esp + 8], 0
mov edi, 0x10
mov ecx, 8
cmova ecx, edi
mov dword [esp + 4], ecx
mov edi, dword [esp + 0x94]
or edi, dword [esp + 0x98]
xor ecx, ecx
or edi, dword [esp + 0x90]
mov edi, 1
cmovne ecx, edi
or ecx, eax
jne 0x4aaeec
mov edi, 1
mov dword [esp], edi
jmp 0x4aaf29
cmp ecx, 0x10000
jae 0x4aaf08
mov edi, dword [esp + 8]
mov dword [esp], 2
or edi, 2
mov dword [esp + 8], edi
jmp 0x4aaf29
cmp ecx, 0x7fff0000
jae 0x4aaf19
mov dword [esp], 4
jmp 0x4aaf29
mov edi, 0x10
mov ecx, 8
cmova ecx, edi
mov dword [esp], ecx
mov edi, dword [esp + 4]
or edi, dword [esp]
cmp dword [esp + 0xa0], 0x7fff
je 0x4ab476
cmp edx, 0x7fff
je 0x4ab476
test edi, 1
je 0x4aafb2
cmp dword [esp + 8], 0
je 0x4aaf75
mov eax, dword [0x4e2c74]
mov edx, dword [0x4e2c78]
movsd xmm0, qword [eax]
mulsd xmm0, qword [edx]
movsd qword [esp + 0x10], xmm0
mov ebx, dword [esp + 0x8c]
mov edi, dword [ebp + 8]
shr ebx, 0x1b
mov eax, dword [ebx + 0x4dc570]
mov dword [edi], eax
mov edx, dword [ebx + 0x4dc574]
mov dword [edi + 4], edx
mov ecx, dword [ebx + 0x4dc578]
mov dword [edi + 8], ecx
mov esi, dword [ebx + 0x4dc57c]
mov dword [edi + 0xc], esi
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 4]
cmp eax, dword [esp]
je 0x4ab178
cmp dword [esp + 4], 2
mov eax, dword [0x4e2c74]
movsd xmm0, qword [eax]
mov ebx, dword [0x4e2c78]
mulsd xmm0, qword [ebx]
movsd qword [esp + 0x10], xmm0
je 0x4ab245
cmp dword [esp + 0xac], 0
je 0x4aaffb
mov ebx, dword [esp + 0xac]
shl ebx, 0xf
xor edx, edx
jmp 0x4ab033
cmp dword [esp + 0x94], 0
je 0x4ab013
mov ebx, dword [esp + 0x94]
mov edx, 0x11
jmp 0x4ab033
mov edx, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
mov eax, 0x31
test edx, edx
cmovne ebx, edx
mov edx, 0x51
cmovne edx, eax
bsr eax, ebx
sub edx, eax
add edx, 0x1f
mov esi, edx
neg esi
cmp edx, 0x20
jge 0x4ab0a9
mov eax, dword [esp + 0xac]
mov ebx, dword [esp + 0x94]
mov ecx, edx
shl eax, cl
mov ecx, esi
mov edi, ebx
shr edi, cl
mov ecx, edx
shl ebx, cl
or eax, edi
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x98]
mov ecx, esi
mov edi, eax
shr edi, cl
mov ecx, edx
shl eax, cl
or ebx, edi
mov dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x90]
mov ecx, esi
mov esi, ebx
shr esi, cl
mov ecx, edx
shl ebx, cl
mov dword [esp + 0x90], ebx
or eax, esi
mov dword [esp + 0x98], eax
jmp 0x4ab170
je 0x4ab216
cmp edx, 0x40
jge 0x4ab0fc
mov ebx, dword [esp + 0x94]
mov eax, dword [esp + 0x98]
mov ecx, edx
shl ebx, cl
mov ecx, esi
mov edi, eax
shr edi, cl
mov ecx, edx
shl eax, cl
or edi, ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 0xac], edi
mov ecx, esi
mov esi, ebx
shr esi, cl
mov ecx, edx
shl ebx, cl
or esi, eax
mov dword [esp + 0x94], esi
mov dword [esp + 0x98], ebx
jmp 0x4ab165
je 0x4ab1f5
cmp edx, 0x60
jge 0x4ab135
mov eax, dword [esp + 0x98]
mov ecx, edx
shl eax, cl
mov ecx, esi
mov esi, dword [esp + 0x90]
mov ebx, esi
shr ebx, cl
mov ecx, edx
shl esi, cl
mov dword [esp + 0x94], esi
or ebx, eax
mov dword [esp + 0xac], ebx
jmp 0x4ab15a
mov eax, dword [esp + 0x90]
mov dword [esp + 0x94], 0
mov ecx, edx
mov ebx, eax
shl ebx, cl
cmp edx, 0x60
cmove ebx, eax
mov dword [esp + 0xac], ebx
mov dword [esp + 0x98], 0
mov dword [esp + 0x90], 0
neg edx
inc edx
jmp 0x4aa65c
fnstcw word [esp + 0x18]
mov ecx, dword [esp + 0x18]
mov eax, dword [0x4e2c7c]
mov edx, dword [0x4e2c74]
movsd xmm0, qword [eax]
mulsd xmm0, qword [edx]
movsd qword [esp + 0x10], xmm0
and ecx, 0xc00
cmp dword [esp + 0x8c], 0
je 0x4ab1bb
mov eax, 1
xor edx, edx
cmp ecx, 0x400
cmovne eax, edx
jmp 0x4ab1cb
mov eax, 1
xor edx, edx
cmp ecx, 0x800
cmovne eax, edx
mov edx, dword [ebp + 8]
mov dword [edx + 4], 0
mov dword [edx], eax
mov eax, dword [esp + 0x8c]
mov dword [edx + 8], 0
mov dword [edx + 0xc], eax
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x90]
mov dword [esp + 0xac], eax
mov dword [esp + 0x94], ebx
jmp 0x4ab15a
mov eax, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
mov esi, dword [esp + 0x90]
mov dword [esp + 0xac], eax
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], esi
jmp 0x4ab165
cmp dword [esp + 0xb0], 0
je 0x4ab266
mov edi, dword [esp + 0xb0]
mov dword [esp + 0xa0], 0
shl edi, 0xf
jmp 0x4ab2ab
cmp dword [esp + 0xa4], 0
je 0x4ab284
mov edi, dword [esp + 0xa4]
mov dword [esp + 0xa0], 0x11
jmp 0x4ab2ab
mov eax, dword [esp + 0xa8]
mov edi, dword [esp + 0x9c]
mov ebx, 0x31
mov esi, 0x51
test eax, eax
cmovne edi, eax
cmovne esi, ebx
mov dword [esp + 0xa0], esi
bsr eax, edi
mov ebx, dword [esp + 0xa0]
sub ebx, eax
add ebx, 0x1f
mov eax, ebx
mov dword [esp + 0xa0], ebx
neg eax
cmp ebx, 0x20
jge 0x4ab33e
mov ecx, ebx
mov ebx, dword [esp + 0xb0]
shl ebx, cl
mov ecx, eax
mov esi, dword [esp + 0xa4]
mov edi, esi
shr edi, cl
or ebx, edi
mov ecx, dword [esp + 0xa0]
shl esi, cl
mov dword [esp + 0xb0], ebx
mov ecx, eax
mov ebx, dword [esp + 0xa8]
mov edi, ebx
shr edi, cl
or esi, edi
mov ecx, dword [esp + 0xa0]
shl ebx, cl
mov dword [esp + 0xa4], esi
mov ecx, eax
mov esi, dword [esp + 0x9c]
mov eax, esi
shr eax, cl
or ebx, eax
mov ecx, dword [esp + 0xa0]
shl esi, cl
mov dword [esp + 0xa8], ebx
mov dword [esp + 0x9c], esi
jmp 0x4ab416
je 0x4ab44a
cmp dword [esp + 0xa0], 0x40
jge 0x4ab39b
mov esi, ebx
mov ebx, dword [esp + 0xa8]
mov ecx, esi
shl dword [esp + 0xa4], cl
mov ecx, eax
mov edi, ebx
shr edi, cl
or edi, dword [esp + 0xa4]
mov ecx, esi
shl ebx, cl
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x9c]
mov ecx, eax
mov eax, edi
shr eax, cl
mov ecx, esi
shl edi, cl
or eax, ebx
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], edi
jmp 0x4ab40b
je 0x4ab42c
cmp dword [esp + 0xa0], 0x60
jge 0x4ab3db
mov esi, ebx
mov ebx, dword [esp + 0xa8]
mov edi, dword [esp + 0x9c]
mov ecx, esi
shl ebx, cl
mov ecx, eax
mov eax, edi
shr eax, cl
mov ecx, esi
shl edi, cl
mov dword [esp + 0xa4], edi
or eax, ebx
mov dword [esp + 0xb0], eax
jmp 0x4ab400
mov ecx, ebx
mov eax, dword [esp + 0x9c]
mov dword [esp + 0xa4], 0
mov ebx, eax
shl ebx, cl
cmp ecx, 0x60
cmove ebx, eax
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xa8], 0
mov dword [esp + 0x9c], 0
mov eax, dword [esp + 0xa0]
neg eax
inc eax
mov dword [esp + 0xa0], eax
jmp 0x4aa65c
mov eax, dword [esp + 0xa8]
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xa4], ebx
jmp 0x4ab400
mov eax, dword [esp + 0xa4]
mov ebx, dword [esp + 0xa8]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0xb0], eax
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], esi
jmp 0x4ab40b
test edi, 0x10
je 0x4ab658
mov edx, dword [esp + 4]
cmp edx, dword [esp]
je 0x4ab4e1
cmp dword [esp + 4], 0x10
je 0x4ab6fb
mov ebx, dword [ebp + 8]
mov eax, dword [esp + 0x90]
mov esi, dword [ebp + 0x10]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
test ecx, 0x8000
jne 0x4ab63f
mov edx, dword [ebp + 8]
mov eax, dword [0x4e2c70]
movsd xmm0, qword [eax]
divsd xmm0, xmm0
mov dword [edx + 0xc], ecx
movsd qword [esp + 0x10], xmm0
mov ecx, dword [edx + 0xc]
jmp 0x4ab63f
mov edx, dword [esp + 0xc]
not esi
and esi, 0x8000
shr esi, 0xf
not edx
and edx, 0x8000
shr edx, 0xf
mov dword [esp + 0xc], edx
mov ecx, esi
or ecx, edx
je 0x4ab519
mov edx, dword [0x4e2c70]
movsd xmm0, qword [edx]
divsd xmm0, xmm0
movsd qword [esp + 0x10], xmm0
cmp esi, dword [esp + 0xc]
je 0x4ab545
test esi, esi
je 0x4ab5fb
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov eax, dword [esi]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
jmp 0x4ab63f
cmp ebx, eax
jb 0x4ab591
je 0x4ab55d
mov edx, dword [esp + 0xa4]
cmp edx, dword [esp + 0x94]
je 0x4ab56f
jmp 0x4ab5af
mov edx, dword [esp + 0xa4]
cmp edx, dword [esp + 0x94]
jb 0x4ab591
jne 0x4ab5af
mov edx, dword [esp + 0xa8]
cmp edx, dword [esp + 0x98]
jb 0x4ab591
jne 0x4ab5af
mov edx, dword [esp + 0x9c]
cmp edx, dword [esp + 0x90]
jae 0x4ab5af
mov esi, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov eax, dword [esi]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
jmp 0x4ab63f
cmp eax, ebx
jb 0x4ab5fb
je 0x4ab5c7
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0xa4]
je 0x4ab5d9
jmp 0x4ab616
mov eax, dword [esp + 0x94]
cmp eax, dword [esp + 0xa4]
jb 0x4ab5fb
jne 0x4ab616
mov eax, dword [esp + 0xa8]
cmp eax, dword [esp + 0x98]
ja 0x4ab5fb
jne 0x4ab616
mov eax, dword [esp + 0x9c]
cmp eax, dword [esp + 0x90]
jbe 0x4ab616
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov eax, dword [esi]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
jmp 0x4ab63f
mov eax, dword [ebp + 0xc]
test dword [eax + 0xc], 0x80000000
je 0x4ab527
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov eax, dword [esi]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
mov eax, dword [ebp + 8]
or ecx, 0x8000
mov dword [eax + 0xc], ecx
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
test edi, 1
je 0x4ab69e
mov eax, dword [0x4e2c70]
mov edx, dword [ebp + 8]
movsd xmm0, qword [eax]
divsd xmm0, xmm0
movsd qword [esp + 0x10], xmm0
mov dword [edx], 0
mov dword [edx + 4], 0
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0xffff8000
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
cmp dword [esp + 8], 0
je 0x4ab6be
mov eax, dword [0x4e2c74]
mov edx, dword [0x4e2c78]
movsd xmm0, qword [eax]
mulsd xmm0, qword [edx]
movsd qword [esp + 0x10], xmm0
mov ebx, dword [esp + 0x8c]
mov edi, dword [ebp + 8]
shr ebx, 0x1b
mov eax, dword [ebx + 0x4dc550]
mov dword [edi], eax
mov edx, dword [ebx + 0x4dc554]
mov dword [edi + 4], edx
mov ecx, dword [ebx + 0x4dc558]
mov dword [edi + 8], ecx
mov esi, dword [ebx + 0x4dc55c]
mov dword [edi + 0xc], esi
add esp, 0xb4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
mov eax, dword [esp + 0x9c]
mov esi, dword [ebp + 0xc]
mov dword [ebx], eax
mov edx, dword [esi + 4]
mov dword [ebx + 4], edx
mov ecx, dword [esi + 8]
mov dword [ebx + 8], ecx
mov ecx, dword [esi + 0xc]
jmp 0x4ab4b4
push ebp
mov ebp, esp
and esp, 0xfffffff8
push edi
push esi
push ebx
sub esp, 0x5c
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov edi, dword [ecx]
mov dword [esp + 0x14], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x2c], edx
mov esi, edx
and esi, 0x7fffffff
mov dword [esp + 0x30], esi
mov dword [esp + 0x10], edi
mov edi, dword [ebx + 8]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0xc]
mov ecx, eax
mov dword [esp + 0x20], edi
mov edi, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0x28], eax
and ecx, 0x7fffffff
xor edx, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebx
and edx, 0x80000000
movzx eax, si
mov dword [esp + 0x50], edx
shr esi, 0x10
mov dword [esp + 0x54], esi
movzx edx, cx
mov edi, ecx
shr edi, 0x10
lea ebx, [esi - 1]
cmp ebx, 0x7ffd
ja 0x4abf49
lea ebx, [edi - 1]
cmp ebx, 0x7ffd
ja 0x4abf49
mov ebx, dword [esp + 0x54]
or eax, 0x10000
or edx, 0x10000
lea ebx, [ebx + edi - 0x4000]
add esp, 0xffffffd0
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
mov dword [esp], esi
mov esi, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], esi
lea edi, [esp + 0x78]
mov dword [esp + 0x2c], edi
lea eax, [esp + 0x60]
lea edx, [esp + 0x68]
lea ecx, [esp + 0x70]
call fcn.004ac6c0
add esp, 0x30
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
xor edi, edi
mov dword [esp], edx
and edx, 2
or edx, edi
je 0x4ab8b4
mov edi, dword [esp]
mov edx, ecx
shr edx, 0x11
shl ecx, 0xf
shl edi, 0xf
or edx, edi
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x40]
mov edi, eax
shr edi, 0x11
or ecx, edi
mov edi, esi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x44]
shr edi, 0x11
shl esi, 0xf
shl eax, 0xf
or edi, eax
mov dword [esp + 0x3c], edi
mov eax, ecx
shr eax, 0x11
or esi, eax
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x48]
or esi, dword [esp + 0x4c]
je 0x4ab898
mov esi, 1
jmp 0x4ab89a
xor esi, esi
mov eax, edx
shr eax, 0x11
shl edx, 0xf
shl ecx, 0xf
or eax, ecx
or edx, esi
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
inc ebx
jmp 0x4ab921
mov edi, dword [esp]
mov edx, ecx
shr edx, 0x10
shl ecx, 0x10
shl edi, 0x10
or edx, edi
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x40]
mov edi, eax
shr edi, 0x10
or ecx, edi
mov edi, esi
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x44]
shr edi, 0x10
shl esi, 0x10
shl eax, 0x10
or edi, eax
mov dword [esp + 0x3c], edi
mov eax, ecx
shr eax, 0x10
or esi, eax
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x48]
or esi, dword [esp + 0x4c]
je 0x4ab908
mov esi, 1
jmp 0x4ab90a
xor esi, esi
mov eax, edx
shr eax, 0x10
shl edx, 0x10
shl ecx, 0x10
or eax, ecx
or edx, esi
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
cmp ebx, 0x7ffd
jae 0x4aba63
or edx, eax
je 0x4abe76
fnstcw word [esp + 0x24]
mov eax, dword [esp + 0x24]
mov edx, dword [0x4e2c78]
mov ecx, dword [0x4e2c7c]
fld qword [edx]
fadd qword [ecx]
fstp qword [esp + 0x28]
and eax, 0xc00
mov dword [esp + 8], eax
jne 0x4ab973
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 4], eax
mov dword [esp], edx
xor ecx, ecx
sub edx, ecx
jl 0x4ab9de
jmp 0x4ab9a3
cmp dword [esp + 8], 0xc00
je 0x4ab9a3
xor eax, eax
or eax, dword [esp + 0x50]
je 0x4ab995
cmp dword [esp + 8], 0x400
je 0x4aba4f
jmp 0x4ab9a3
cmp dword [esp + 8], 0x800
je 0x4aba4f
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov esi, dword [ebp + 8]
mov dword [esi], edx
mov edx, dword [esp + 0x50]
mov dword [esi + 4], ecx
shl ebx, 0x10
add eax, ebx
or edx, eax
mov eax, dword [esp + 0xc]
mov dword [esi + 8], eax
mov dword [esi + 0xc], edx
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
add edx, 1
adc ecx, 0
mov eax, edx
or eax, ecx
jne 0x4aba06
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
add esi, 1
adc eax, 0
mov dword [esp + 0xc], esi
jmp 0x4aba12
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 4]
mov esi, dword [esp]
add edi, edi
adc esi, esi
or edi, esi
jne 0x4aba2a
mov dword [esp], 1
jmp 0x4aba31
mov dword [esp], 0
mov dword [esp + 4], ebx
xor ebx, ebx
cmp dword [esp + 8], 0
sete bl
and ebx, dword [esp]
not ebx
and edx, ebx
mov ebx, dword [esp + 4]
jmp 0x4ab9b7
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov dword [esp + 4], eax
mov dword [esp], edx
jmp 0x4ab9de
fnstcw word [esp + 0x24]
mov esi, dword [esp + 0x24]
mov edi, esi
and edi, 0xc00
jne 0x4aba85
mov edx, dword [esp + 0x44]
xor eax, eax
sub edx, eax
jl 0x4abb51
jmp 0x4abaaf
cmp edi, 0xc00
je 0x4abaaf
xor eax, eax
or eax, dword [esp + 0x50]
je 0x4abaa3
cmp edi, 0x400
je 0x4abb43
jmp 0x4abaaf
cmp edi, 0x800
je 0x4abf31
xor ecx, ecx
cmp ebx, 0x7ffd
jle 0x4abb2c
mov eax, dword [0x4e2c80]
fld qword [eax]
fmul st(0)
fstp qword [esp + 0x28]
cmp edi, 0xc00
je 0x4abb97
mov edx, dword [esp + 0x50]
xor eax, eax
or edx, eax
je 0x4abaeb
cmp edi, 0x800
je 0x4abb5b
mov eax, 1
jmp 0x4abaf9
cmp edi, 0x400
je 0x4abb93
xor eax, eax
mov esi, dword [ebp + 8]
shl eax, 4
mov edx, dword [eax + 0x4dc550]
mov ecx, dword [eax + 0x4dc554]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov ebx, dword [eax + 0x4dc558]
mov eax, dword [eax + 0x4dc55c]
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
je 0x4abee5
test ebx, ebx
jl 0x4abba3
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
jmp 0x4ab92d
mov eax, dword [esp + 0x40]
or eax, dword [esp + 0x44]
je 0x4abaaf
mov ecx, 1
jmp 0x4abab1
mov ebx, 1
mov esi, dword [ebp + 8]
shl ebx, 4
mov eax, dword [ebx + 0x4dc590]
mov edx, dword [ebx + 0x4dc594]
mov dword [esi], eax
mov dword [esi + 4], edx
mov ecx, dword [ebx + 0x4dc598]
mov ebx, dword [ebx + 0x4dc59c]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x4abb60
mov edx, dword [esp + 0x50]
xor eax, eax
or edx, eax
jne 0x4abb5b
jmp 0x4abb93
cmp ebx, 0xffffffff
jge 0x4abbb9
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp], edx
jmp 0x4abc2e
test ecx, ecx
jne 0x4abbce
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp], edx
jmp 0x4abc2e
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov ecx, 0xffffffff
mov edi, edx
sub edi, ecx
mov edi, eax
mov ecx, 0x1ffff
sbb edi, ecx
jae 0x4abbfb
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp], edx
jmp 0x4abc2e
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
mov dword [esp + 8], ecx
mov dword [esp], edi
mov edi, 0x1ffff
mov ecx, 0xffffffff
sub edx, ecx
sub eax, edi
or edx, eax
jne 0x4abc38
mov eax, dword [esp + 8]
mov ecx, dword [esp]
mov edx, 0xffffffff
sub eax, edx
sbb ecx, edx
jae 0x4abc38
mov dword [esp + 0x1c], 1
jmp 0x4abc3e
xor eax, eax
mov dword [esp + 0x1c], eax
neg ebx
mov eax, ebx
and eax, 0x3f
mov dword [esp + 0x20], eax
mov edx, ebx
neg edx
and edx, 0x3f
mov dword [esp + 0x18], edx
cmp ebx, 0x40
jge 0x4abd6a
mov eax, dword [esp + 0x40]
or eax, dword [esp + 0x44]
je 0x4abc6e
mov ebx, 1
jmp 0x4abc70
xor ebx, ebx
cmp dword [esp + 0x18], 0x1f
ja 0x4abc87
mov ecx, edx
mov eax, dword [esp]
mov edx, dword [esp + 8]
shld eax, edx, cl
shl edx, cl
jmp 0x4abc91
mov ecx, edx
mov eax, dword [esp + 8]
shl eax, cl
xor edx, edx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x44], eax
or edx, ebx
mov ebx, dword [esp + 0x34]
cmp dword [esp + 0x18], 0x1f
mov dword [esp + 0x40], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 4], ebx
ja 0x4abccb
mov ecx, dword [esp + 0x18]
mov edi, ebx
mov ebx, dword [esp + 0x10]
shld edi, ebx, cl
shl ebx, cl
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], edi
jmp 0x4abce1
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x10]
shl ebx, cl
mov dword [esp + 0x14], ebx
mov dword [esp + 0xc], 0
cmp dword [esp + 0x20], 0x1f
ja 0x4abd02
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp]
mov edi, dword [esp + 8]
shrd edi, ebx, cl
shr ebx, cl
mov dword [esp + 0x18], ebx
mov dword [esp + 8], edi
jmp 0x4abd15
mov ecx, dword [esp + 0x20]
mov edi, dword [esp]
shr edi, cl
xor ebx, ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 8], edi
mov ecx, dword [esp + 0xc]
or ecx, dword [esp + 8]
mov ebx, dword [esp + 0x14]
or ebx, dword [esp + 0x18]
cmp dword [esp + 0x20], 0x1f
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ebx
ja 0x4abd4b
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x10]
shrd edi, ebx, cl
shr ebx, cl
mov dword [esp + 0x10], edi
jmp 0x4abd5b
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 4]
shr edi, cl
xor ebx, ebx
mov dword [esp + 0x10], edi
mov ecx, edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ebx
jmp 0x4abe23
je 0x4abeae
cmp ebx, 0x80
jge 0x4abdfe
mov edx, dword [esp + 8]
or edx, dword [esp + 0x40]
mov eax, dword [esp]
or eax, dword [esp + 0x44]
or edx, eax
je 0x4abd98
mov dword [esp], 1
jmp 0x4abd9d
xor eax, eax
mov dword [esp], eax
cmp dword [esp + 0x18], 0x1f
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov dword [esp + 4], eax
ja 0x4abdbd
mov ecx, dword [esp + 0x18]
shld eax, edi, cl
mov edx, edi
shl edx, cl
jmp 0x4abdc7
mov ecx, dword [esp + 0x18]
xor edx, edx
mov eax, edi
shl eax, cl
or edx, dword [esp]
cmp dword [esp + 0x20], 0x1f
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
ja 0x4abde8
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 4]
shrd edi, ebx, cl
shr ebx, cl
jmp 0x4abdf4
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 4]
shr edi, cl
xor ebx, ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], ebx
jmp 0x4abe19
mov dword [esp + 0x40], 1
mov edx, 1
xor eax, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
xor ecx, ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x1c], 0
je 0x4abea7
or edx, eax
je 0x4abe4a
mov eax, dword [0x4e2c7c]
fld qword [eax]
fmul st(0)
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
fstp qword [esp + 0x28]
xor ebx, ebx
jmp 0x4ab92d
test esi, 0x10
jne 0x4abe74
mov eax, dword [0x4e2c7c]
fld qword [eax]
mov edx, dword [0x4e2c84]
fmul qword [edx]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
fstp qword [esp + 0x28]
xor ebx, ebx
jmp 0x4ab92d
xor ebx, ebx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x30]
mov esi, dword [esp + 0x50]
mov dword [edi], eax
mov dword [edi + 4], edx
shl ebx, 0x10
add ebx, dword [esp + 0x34]
or esi, ebx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], esi
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor ebx, ebx
jmp 0x4ab92d
mov eax, dword [esp + 0x40]
or eax, dword [esp + 0x44]
je 0x4abebf
mov edx, 1
jmp 0x4abec1
xor edx, edx
or edx, dword [esp + 8]
mov eax, dword [esp]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x3c], ebx
jmp 0x4abe19
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov esi, 0xffffffff
sub edx, esi
mov esi, 0x1ffff
sub eax, esi
or edx, eax
jne 0x4abb36
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov eax, 0xffffffff
sub esi, eax
sub edx, eax
or esi, edx
jne 0x4abb36
test ecx, ecx
jne 0x4abab9
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
jmp 0x4ab92d
mov eax, dword [esp + 0x40]
or eax, dword [esp + 0x44]
je 0x4abaaf
mov ecx, 1
jmp 0x4abab1
mov ebx, dword [esp + 0x10]
or ebx, dword [esp + 0xc]
je 0x4abf5d
mov dword [esp + 4], 1
jmp 0x4abf63
xor ebx, ebx
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
or ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x30]
mov dword [esp + 4], ebx
or esi, ebx
jne 0x4abf88
mov dword [esp], 0
mov dword [esp + 8], 1
jmp 0x4abfef
mov esi, dword [esp + 0x30]
mov ebx, 0x10000
sub esi, ebx
jae 0x4abfa3
mov ebx, 2
mov dword [esp], ebx
mov dword [esp + 8], ebx
jmp 0x4abfef
mov esi, dword [esp + 0x30]
mov ebx, 0x7fff0000
sub esi, ebx
jae 0x4abfc1
mov dword [esp], 0
mov dword [esp + 8], 4
jmp 0x4abfef
mov esi, dword [esp + 0x30]
mov dword [esp], 0
mov ebx, 0x7fff0000
sub esi, ebx
jb 0x4abfe7
mov ebx, dword [esp + 4]
or ebx, esi
je 0x4abfe7
mov dword [esp + 8], 0x10
jmp 0x4abfef
mov dword [esp + 8], 8
mov ebx, dword [esp + 0x1c]
or ebx, dword [esp + 0x18]
je 0x4ac003
mov dword [esp + 4], 1
jmp 0x4ac009
xor ebx, ebx
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
or ebx, dword [esp + 0x20]
mov esi, ecx
mov dword [esp + 4], ebx
or esi, ebx
jne 0x4ac022
mov ebx, 1
jmp 0x4ac069
mov esi, ecx
mov ebx, 0x10000
sub esi, ebx
jae 0x4ac03d
mov ebx, dword [esp]
or ebx, 2
mov dword [esp], ebx
mov ebx, 2
jmp 0x4ac069
mov ebx, ecx
mov esi, 0x7fff0000
sub ebx, esi
jae 0x4ac04f
mov ebx, 4
jmp 0x4ac069
mov ebx, ecx
sub ebx, esi
jb 0x4ac064
mov esi, dword [esp + 4]
or esi, ebx
je 0x4ac064
mov ebx, 0x10
jmp 0x4ac069
mov ebx, 8
mov esi, dword [esp + 8]
or esi, ebx
cmp dword [esp + 0x54], 0x7fff
je 0x4ac443
cmp edi, 0x7fff
je 0x4ac443
test esi, 1
je 0x4ac0f0
cmp dword [esp], 0
je 0x4ac0aa
mov eax, dword [0x4e2c74]
fld qword [eax]
mov edx, dword [0x4e2c78]
fmul qword [edx]
fstp qword [esp + 0x28]
mov edx, dword [esp + 0x50]
xor eax, eax
or edx, eax
je 0x4ac0bb
mov eax, 1
jmp 0x4ac0bd
xor eax, eax
mov esi, dword [ebp + 8]
shl eax, 4
mov edx, dword [eax + 0x4dc570]
mov ecx, dword [eax + 0x4dc574]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov ebx, dword [eax + 0x4dc578]
mov eax, dword [eax + 0x4dc57c]
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
cmp ebx, dword [esp + 8]
je 0x4ac263
cmp dword [esp + 8], 2
mov ebx, dword [0x4e2c74]
fld qword [ebx]
mov esi, dword [0x4e2c78]
fmul qword [esi]
fstp qword [esp + 0x28]
je 0x4ac2c8
mov ecx, dword [esp + 0x20]
mov dword [esp + 4], ecx
or ecx, edx
mov dword [esp], edx
jne 0x4ac13e
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov edi, 0x31
jmp 0x4ac143
mov edi, 0xfffffff1
mov esi, dword [esp]
mov ebx, 1
sub esi, ebx
jae 0x4ac154
add edi, 0x20
jmp 0x4ac15b
mov ebx, dword [esp]
mov dword [esp + 4], ebx
bsr ebx, dword [esp + 4]
sub edi, ebx
add edi, 0x1f
cmp edi, 0x40
jge 0x4ac20a
cmp edi, 0x1f
ja 0x4ac183
mov ebx, dword [esp + 0x20]
mov ecx, edi
shld edx, ebx, cl
shl ebx, cl
mov dword [esp], ebx
jmp 0x4ac192
mov edx, dword [esp + 0x20]
mov dword [esp], 0
mov ecx, edi
shl edx, cl
mov ecx, edi
neg ecx
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x4ac1bf
mov ebx, dword [esp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
shrd ebx, eax, cl
mov esi, eax
mov eax, dword [esp + 8]
shr esi, cl
mov dword [esp + 0x20], ebx
mov dword [esp + 4], esi
jmp 0x4ac1d1
mov ebx, dword [esp + 0x18]
shr ebx, cl
mov dword [esp + 0x20], ebx
mov dword [esp + 4], 0
or edx, dword [esp + 4]
or ebx, dword [esp]
mov dword [esp + 0x20], ebx
cmp edi, 0x1f
ja 0x4ac1f6
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov ecx, edi
shld esi, ebx, cl
shl ebx, cl
mov dword [esp + 0x18], esi
jmp 0x4ac204
mov esi, dword [esp + 0x1c]
xor ebx, ebx
mov ecx, edi
shl esi, cl
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ebx
jmp 0x4ac25b
mov ecx, edi
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x4ac227
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
shld edx, ebx, cl
shl ebx, cl
mov dword [esp + 0x20], ebx
jmp 0x4ac233
xor edx, edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x1c]
shl edx, cl
mov esi, dword [esp + 0x20]
xor ebx, ebx
cmp edi, 0x40
sete bl
test ebx, ebx
je 0x4ac247
mov esi, dword [esp + 0x1c]
je 0x4ac24d
mov edx, dword [esp + 0x18]
mov dword [esp + 0x20], esi
xor ebx, ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], ebx
neg edi
inc edi
jmp 0x4ab7bc
fnstcw word [esp + 0x24]
mov ebx, dword [esp + 0x24]
mov eax, dword [0x4e2c7c]
fld qword [eax]
and ebx, 0xc00
xor ecx, ecx
or ecx, dword [esp + 0x50]
mov edx, dword [0x4e2c74]
fmul qword [edx]
fstp qword [esp + 0x28]
je 0x4ac299
xor eax, eax
cmp ebx, 0x400
sete al
jmp 0x4ac2a4
xor eax, eax
cmp ebx, 0x800
sete al
mov edx, dword [ebp + 8]
mov dword [edx + 4], 0
mov dword [edx], eax
mov eax, dword [esp + 0x50]
mov dword [edx + 8], 0
mov dword [edx + 0xc], eax
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov ebx, dword [esp + 0x14]
mov dword [esp + 4], ebx
or ebx, eax
mov dword [esp], eax
jne 0x4ac2f0
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
mov dword [esp + 0x54], 0x31
mov dword [esp + 4], ebx
mov dword [esp], esi
jmp 0x4ac2f8
mov dword [esp + 0x54], 0xfffffff1
mov esi, dword [esp]
mov ebx, 1
sub esi, ebx
jae 0x4ac311
mov ebx, dword [esp + 0x54]
add ebx, 0x20
mov dword [esp + 0x54], ebx
jmp 0x4ac318
mov ebx, dword [esp]
mov dword [esp + 4], ebx
bsr ebx, dword [esp + 4]
mov esi, dword [esp + 0x54]
sub esi, ebx
add esi, 0x1f
cmp esi, 0x40
mov dword [esp + 0x54], esi
jge 0x4ac3e0
cmp dword [esp + 0x54], 0x1f
ja 0x4ac34a
mov ecx, esi
mov ebx, dword [esp + 0x14]
shld eax, ebx, cl
shl ebx, cl
mov dword [esp], ebx
jmp 0x4ac359
mov ecx, esi
mov eax, dword [esp + 0x14]
shl eax, cl
mov dword [esp], 0
neg ecx
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x4ac384
mov ebx, dword [esp + 0x10]
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc]
shrd ebx, eax, cl
mov esi, eax
mov eax, dword [esp + 8]
shr esi, cl
mov dword [esp + 0x14], ebx
mov dword [esp + 4], esi
jmp 0x4ac396
mov ebx, dword [esp + 0xc]
shr ebx, cl
mov dword [esp + 0x14], ebx
mov dword [esp + 4], 0
or eax, dword [esp + 4]
or ebx, dword [esp]
cmp dword [esp + 0x54], 0x1f
mov dword [esp + 0x14], ebx
ja 0x4ac3c2
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
shld esi, ebx, cl
shl ebx, cl
mov dword [esp], ebx
mov dword [esp + 0xc], esi
jmp 0x4ac3d7
mov ecx, dword [esp + 0x54]
mov ebx, dword [esp + 0x10]
shl ebx, cl
mov dword [esp + 0xc], ebx
mov dword [esp], 0
mov ebx, dword [esp]
mov dword [esp + 0x10], ebx
jmp 0x4ac433
mov ecx, esi
and ecx, 0x3f
cmp ecx, 0x1f
ja 0x4ac3fd
mov eax, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
shld eax, ebx, cl
shl ebx, cl
mov dword [esp + 0x14], ebx
jmp 0x4ac409
xor eax, eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
shl eax, cl
mov esi, dword [esp + 0x14]
xor ebx, ebx
cmp dword [esp + 0x54], 0x40
sete bl
test ebx, ebx
je 0x4ac41f
mov esi, dword [esp + 0x10]
je 0x4ac425
mov eax, dword [esp + 0xc]
mov dword [esp + 0x14], esi
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x54]
neg ebx
inc ebx
mov dword [esp + 0x54], ebx
jmp 0x4ab7bc
test esi, 0x10
je 0x4ac615
cmp ebx, dword [esp + 8]
je 0x4ac4c3
cmp dword [esp + 8], 0x10
je 0x4ac477
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebx, dword [ebp + 0x10]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
jmp 0x4ac490
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov ebx, dword [ebp + 0xc]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
mov ecx, ebx
and ecx, 0x8000
xor edx, edx
or ecx, edx
jne 0x4ac5fc
mov edx, dword [ebp + 8]
mov dword [edx + 8], eax
mov eax, dword [0x4e2c70]
fld qword [eax]
fdiv st(0)
mov dword [edx + 0xc], ebx
fstp qword [esp + 0x28]
mov eax, dword [edx + 8]
mov ebx, dword [edx + 0xc]
jmp 0x4ac5fc
mov edx, dword [esp + 0x2c]
and edx, 0x8000
xor eax, eax
or edx, eax
jne 0x4ac4da
mov eax, 1
jmp 0x4ac4dc
xor eax, eax
mov ecx, dword [esp + 0x28]
and ecx, 0x8000
xor edx, edx
or ecx, edx
jne 0x4ac4f3
mov edx, 1
jmp 0x4ac4f5
xor edx, edx
mov ecx, eax
or ecx, edx
je 0x4ac509
mov ecx, dword [0x4e2c70]
fld qword [ecx]
fdiv st(0)
fstp qword [esp + 0x28]
cmp edx, eax
je 0x4ac530
test eax, eax
je 0x4ac5b8
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
jmp 0x4ac5fc
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
sbb edx, dword [esp + 0x34]
jb 0x4ac568
mov edx, dword [esp + 0x14]
sub edx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x34]
or edx, eax
jne 0x4ac580
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
sbb edx, dword [esp + 0x18]
jae 0x4ac580
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
jmp 0x4ac5fc
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
sbb edx, dword [esp + 0x30]
jb 0x4ac5b8
mov edx, dword [esp + 0x20]
sub edx, dword [esp + 0x14]
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x30]
or edx, eax
jne 0x4ac5d0
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
sbb edx, dword [esp + 0xc]
jae 0x4ac5d0
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
jmp 0x4ac5fc
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0xc]
and ecx, 0x80000000
xor edx, edx
or ecx, edx
je 0x4ac515
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov eax, dword [ebx + 8]
mov ebx, dword [ebx + 0xc]
mov edx, dword [ebp + 8]
or ebx, 0x8000
mov dword [edx + 8], eax
mov dword [edx + 0xc], ebx
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
test esi, 1
je 0x4ac65a
mov eax, dword [0x4e2c70]
fld qword [eax]
fdiv st(0)
mov edx, dword [0x4dc5b0]
mov ecx, dword [0x4dc5b4]
mov edi, dword [ebp + 8]
fstp qword [esp + 0x28]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov ebx, dword [0x4dc5b8]
mov esi, dword [0x4dc5bc]
mov dword [edi + 8], ebx
mov dword [edi + 0xc], esi
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
cmp dword [esp], 0
je 0x4ac673
mov eax, dword [0x4e2c74]
fld qword [eax]
mov edx, dword [0x4e2c78]
fmul qword [edx]
fstp qword [esp + 0x28]
mov edx, dword [esp + 0x50]
xor eax, eax
or edx, eax
je 0x4ac684
mov eax, 1
jmp 0x4ac686
xor eax, eax
mov esi, dword [ebp + 8]
shl eax, 4
mov edx, dword [eax + 0x4dc550]
mov ecx, dword [eax + 0x4dc554]
mov dword [esi], edx
mov dword [esi + 4], ecx
mov ebx, dword [eax + 0x4dc558]
mov eax, dword [eax + 0x4dc55c]
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
add esp, 0x5c
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
test dword [0x4ed7bc], 0xfffffe00
jne 0x4aa5a0
test dword [0x4ed7bc], 0xffffffff
jne 0x4ab720
call fcn.004a7320
jmp fcn.004ac9f0