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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x3ab7c
call fcn.004a54a0
push ebx
push esi
mov esi, dword [ebp + 0x1c]
mov eax, dword [ebp + 8]
imul esi, dword [ebp + 0x20]
mov edx, dword [eax + 0x88]
push edi
test esi, esi
mov dword [esp + 0x100], edx
jle 0x521e78
mov edi, dword [ebp + 0x14]
mov ecx, esi
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x38]
mov edi, dword [ebp + 0x18]
test eax, eax
je 0x521ea0
mov eax, dword [ebp + 0x30]
test eax, eax
je 0x521e96
test esi, esi
jle 0x521ea0
mov ecx, esi
mov eax, 0x7f7fffff
jmp 0x521e9e
test esi, esi
jle 0x521ea0
mov ecx, esi
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [edx]
xor edi, edi
test eax, eax
mov dword [esp + 0xfc], edi
jle 0x5230fa
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
jmp 0x521ec2
mov edx, dword [esp + 0x100]
lea ecx, [edi + edi*8]
mov eax, dword [edx + ecx*4 + 0x34]
lea ecx, [edx + ecx*4 + 0x18]
mov edx, dword [ebp + 0x2c]
mov dword [esp + 0x104], ecx
cmp eax, edx
jg 0x521ee8
dec eax
cmp dword [ecx + 0x18], eax
jne 0x521ee8
mov eax, 1
jmp 0x521eea
xor eax, eax
cmp dword [ecx + 0x18], edx
mov dword [esp + 0x68], eax
je 0x521efb
test eax, eax
je 0x5230d9
mov eax, dword [ecx + 4]
mov edx, dword [eax + 0xc]
mov eax, dword [edx + 0xc]
cmp dword [eax + 0x20], 3
jne 0x5230e3
mov edx, dword [eax + 0x24]
mov dword [esp + 0x74], edx
mov eax, dword [edx + 8]
test eax, eax
je 0x5230e3
test edx, edx
je 0x5230e3
mov eax, dword [ecx + 0x10]
fld qword [eax]
fsub qword [esi]
fld qword [eax + 8]
fsub qword [esi + 8]
fld qword [eax + 0x10]
fsub qword [esi + 0x10]
fld st(2)
fmul dword [ebx]
fld st(1)
fmul dword [ebx + 8]
mov eax, dword [ecx + 0xc]
faddp st(1)
fld st(2)
fmul dword [ebx + 4]
faddp st(1)
fstp dword [esp + 0x94]
fld st(2)
fmul dword [ebx + 0xc]
fld st(1)
fmul dword [ebx + 0x14]
faddp st(1)
fld st(2)
fmul dword [ebx + 0x10]
faddp st(1)
fstp dword [esp + 0x98]
fmul dword [ebx + 0x20]
fxch st(1)
fmul dword [ebx + 0x1c]
faddp st(1)
fxch st(1)
fmul dword [ebx + 0x18]
faddp st(1)
fstp dword [esp + 0x9c]
fld dword [eax + 0x18]
fmul dword [ebx + 8]
fld dword [eax + 0xc]
fmul dword [ebx + 4]
faddp st(1)
fld dword [eax]
fmul dword [ebx]
faddp st(1)
fstp dword [esp + 0xa0]
fld dword [eax + 0x1c]
fmul dword [ebx + 8]
fld dword [eax + 0x10]
fmul dword [ebx + 4]
faddp st(1)
fld dword [eax + 4]
fmul dword [ebx]
faddp st(1)
fstp dword [esp + 0xa4]
fld dword [ebx]
fmul dword [eax + 8]
fld dword [eax + 0x20]
fmul dword [ebx + 8]
faddp st(1)
fld dword [eax + 0x14]
fmul dword [ebx + 4]
faddp st(1)
fstp dword [esp + 0xa8]
fld dword [eax]
fmul dword [ebx + 0xc]
fld dword [ebx + 0x14]
fmul dword [eax + 0x18]
faddp st(1)
fld dword [ebx + 0x10]
fmul dword [eax + 0xc]
faddp st(1)
fstp dword [esp + 0xac]
fld dword [eax + 4]
fmul dword [ebx + 0xc]
fld dword [eax + 0x1c]
fmul dword [ebx + 0x14]
faddp st(1)
fld dword [eax + 0x10]
fmul dword [ebx + 0x10]
mov ecx, dword [ebx + 0x24]
lea esi, [esp + 0xa0]
lea edi, [esp + 0x108]
faddp st(1)
fstp dword [esp + 0xb0]
fld dword [eax + 0x20]
fmul dword [ebx + 0x14]
fld dword [eax + 0x14]
fmul dword [ebx + 0x10]
faddp st(1)
fld dword [eax + 8]
fmul dword [ebx + 0xc]
faddp st(1)
fstp dword [esp + 0xb4]
fld dword [ebx + 0x20]
fmul dword [eax + 0x18]
fld dword [ebx + 0x1c]
fmul dword [eax + 0xc]
faddp st(1)
fld dword [eax]
fmul dword [ebx + 0x18]
faddp st(1)
fstp dword [esp + 0xb8]
fld dword [ebx + 0x20]
fmul dword [eax + 0x1c]
fld dword [ebx + 0x1c]
fmul dword [eax + 0x10]
faddp st(1)
fld dword [eax + 4]
fmul dword [ebx + 0x18]
faddp st(1)
fstp dword [esp + 0xbc]
fld dword [eax + 8]
fmul dword [ebx + 0x18]
fld dword [ebx + 0x20]
fmul dword [eax + 0x20]
faddp st(1)
fld dword [ebx + 0x1c]
fmul dword [eax + 0x14]
mov eax, dword [eax + 0x24]
faddp st(1)
lea eax, [eax + ecx + 1]
mov ecx, 0xa
mov dword [esp + 0xc4], eax
cmp eax, 0x3e8
fstp dword [esp + 0xc0]
rep movsd dword es:[edi], dword [esi]
jle 0x5223e3
fld dword [esp + 0xa0]
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa4]
fcomp dword [0x5333ec]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xdc], eax
mov dword [esp + 0xd8], ecx
fnstsw ax
test ah, 0x40
je 0x52211f
fld dword [esp + 0xa4]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x52211f
fld dword [esp + 0xa8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x522184
fld dword [esp + 0xa8]
fld dword [esp + 0xa4]
fld dword [esp + 0xa0]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fdivr qword [0x5333f8]
fld dword [esp + 0xa0]
fmul st(1)
fstp dword [esp + 0xd4]
fld dword [esp + 0xd8]
fmul st(1)
fstp dword [esp + 0xd8]
fld dword [esp + 0xdc]
fmul st(1)
fstp dword [esp + 0xdc]
fstp st(0)
fld dword [esp + 0xbc]
fmul dword [esp + 0xa8]
fld dword [esp + 0xc0]
fmul dword [esp + 0xa4]
fsubp st(1)
fstp dword [esp + 0x58]
fld dword [esp + 0xb8]
fmul dword [esp + 0xa8]
fld dword [esp + 0xc0]
fmul dword [esp + 0xa0]
mov ecx, dword [esp + 0x58]
mov dword [esp + 0xe0], ecx
fsubp st(1)
fchs
fstp dword [esp + 0x5c]
fld dword [esp + 0xb8]
fmul dword [esp + 0xa4]
fld dword [esp + 0xbc]
fmul dword [esp + 0xa0]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xe4], eax
fsubp st(1)
fstp dword [esp + 0x60]
fld dword [esp + 0x60]
fmul dword [esp + 0xd8]
fld dword [esp + 0x5c]
fmul dword [esp + 0xdc]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xe8], ecx
fsubp st(1)
fstp dword [esp + 0x84]
fld dword [esp + 0x60]
fmul dword [esp + 0xd4]
fld dword [esp + 0x58]
fmul dword [esp + 0xdc]
mov eax, dword [esp + 0x84]
mov dword [esp + 0xec], eax
fsubp st(1)
fchs
fstp dword [esp + 0x88]
fld dword [esp + 0x5c]
fmul dword [esp + 0xd4]
fld dword [esp + 0x58]
fmul dword [esp + 0xd8]
mov ecx, dword [esp + 0x88]
mov dword [esp + 0xf0], ecx
fsubp st(1)
fstp dword [esp + 0x8c]
fld dword [esp + 0x58]
fcomp dword [0x5333ec]
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xf4], eax
fnstsw ax
test ah, 0x40
je 0x5222c9
fld dword [esp + 0x5c]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x5222c9
fld dword [esp + 0x60]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x522322
fld dword [esp + 0x58]
fld dword [esp + 0x5c]
fld dword [esp + 0x60]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fdivr qword [0x5333f8]
fld dword [esp + 0x58]
fmul st(1)
fstp dword [esp + 0xe0]
fld dword [esp + 0xe4]
fmul st(1)
fstp dword [esp + 0xe4]
fld dword [esp + 0xe8]
fmul st(1)
fstp dword [esp + 0xe8]
fstp st(0)
fld dword [esp + 0x84]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x52235e
fld dword [esp + 0x88]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x52235e
fld dword [esp + 0x8c]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x5223c3
fld dword [esp + 0x8c]
fld dword [esp + 0x88]
fld dword [esp + 0x84]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp st(3)
fstp st(0)
fstp st(0)
fdivr qword [0x5333f8]
fld dword [esp + 0x84]
fmul st(1)
fstp dword [esp + 0xec]
fld dword [esp + 0xf0]
fmul st(1)
fstp dword [esp + 0xf0]
fld dword [esp + 0xf4]
fmul st(1)
fstp dword [esp + 0xf4]
fstp st(0)
mov ecx, 0xa
lea esi, [esp + 0xd4]
lea edi, [esp + 0xa0]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0xc4], 0
mov eax, dword [edx + 0x10]
xor esi, esi
test eax, eax
jle 0x522585
xor edi, edi
lea ecx, [esp + 0x210]
mov eax, edi
add eax, dword [edx + 0x14]
fld dword [esp + 0x110]
mov edx, dword [eax]
mov dword [esp + 0x34], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x38], edx
mov eax, dword [eax + 8]
mov dword [esp + 0x3c], eax
fmul dword [esp + 0x3c]
fld dword [esp + 0x10c]
fmul dword [esp + 0x38]
faddp st(1)
fld dword [esp + 0x108]
fmul dword [esp + 0x34]
faddp st(1)
fstp dword [esp + 0x16c]
fld dword [esp + 0x11c]
fmul dword [esp + 0x3c]
fld dword [esp + 0x118]
fmul dword [esp + 0x38]
mov edx, dword [esp + 0x16c]
faddp st(1)
fld dword [esp + 0x114]
fmul dword [esp + 0x34]
faddp st(1)
fstp dword [esp + 0x170]
fld dword [esp + 0x128]
fmul dword [esp + 0x3c]
fld dword [esp + 0x124]
fmul dword [esp + 0x38]
mov eax, dword [esp + 0x170]
mov dword [esp + 0x38], eax
faddp st(1)
fld dword [esp + 0x120]
fmul dword [esp + 0x34]
mov dword [esp + 0x34], edx
faddp st(1)
fstp dword [esp + 0x174]
fld dword [esp + 0x16c]
fadd dword [esp + 0x94]
fld dword [esp + 0x38]
fadd dword [esp + 0x98]
mov edx, dword [esp + 0x174]
mov dword [esp + 0x3c], edx
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fadd dword [esp + 0x9c]
fcom dword [0x534bb8]
fnstsw ax
test ah, 1
jne 0x52255f
mov eax, dword [ebp + 0x30]
test eax, eax
je 0x522526
mov eax, dword [ebp + 0x1c]
fstp dword [ecx]
sar eax, 1
mov dword [esp + 0x30], eax
fild dword [esp + 0x30]
fstp dword [esp + 0xc]
fdiv dword [ebp + 0x3c]
fmul dword [esp + 0xc]
fadd dword [ebp + 0x24]
fstp dword [ecx - 8]
fld dword [esp + 0x38]
fdiv dword [ebp + 0x3c]
fmul dword [esp + 0xc]
fadd dword [ebp + 0x28]
fstp dword [ecx - 4]
jmp 0x522571
fdivr dword [0x5333e0]
mov edx, dword [ebp + 0x1c]
sar edx, 1
mov dword [esp + 0x30], edx
fst dword [ecx]
fild dword [esp + 0x30]
fstp dword [esp + 0xc]
fmul dword [esp + 0xc]
fmul st(1)
fadd dword [ebp + 0x24]
fstp dword [ecx - 8]
fstp st(0)
fld dword [esp + 0xc]
fmul dword [esp + 0x38]
fmul dword [ecx]
fadd dword [ebp + 0x28]
fstp dword [ecx - 4]
jmp 0x522571
fsub dword [0x534bb8]
mov eax, dword [esp + 0x38]
fstp dword [ecx]
fstp dword [ecx - 8]
mov dword [ecx - 4], eax
mov edx, dword [esp + 0x74]
inc esi
add edi, 0x28
add ecx, 0xc
cmp esi, dword [edx + 0x10]
jl 0x5223f9
mov ecx, dword [edx + 0x1c]
xor edx, edx
mov eax, 0x55555556
mov dx, word [ecx + 0xc]
lea esi, [ecx + 0x20]
imul edx
mov eax, edx
mov dword [esp + 0x2c], ecx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x90], esi
test edx, edx
mov dword [esp + 0x30], 0
jle 0x5230c1
jmp 0x5225c7
mov esi, dword [esp + 0x90]
mov ecx, dword [esp + 0x2c]
mov dx, word [ecx + 0x14]
mov ax, word [esi + 2]
mov cx, dx
add ax, dx
add cx, word [esi]
mov si, word [esi + 4]
add si, dx
mov word [esp + 0x6e], ax
cmp cx, ax
mov word [esp + 0x6c], cx
mov word [esp + 0x70], si
je 0x523080
cmp ax, si
je 0x523080
cmp si, cx
je 0x523080
mov dx, si
cmp ax, dx
je 0x523080
cmp dx, cx
je 0x523080
mov edx, dword [esp + 0x2c]
mov esi, dword [ebp + 0x34]
xor ecx, ecx
cmp word [edx + 0x18], cx
sete cl
xor eax, eax
test esi, esi
setne al
xor ecx, eax
je 0x523080
mov ecx, edx
mov edx, dword [esp + 0x104]
xor eax, eax
mov edi, dword [esp + 0x70]
mov ax, word [ecx + 0x12]
mov edx, dword [edx]
and edi, 0xffff
mov esi, dword [edx + 0x38]
lea ecx, [eax + eax*4]
lea ecx, [esi + ecx*8]
mov esi, dword [esp + 0x6e]
mov dword [esp + 0x64], ecx
lea ecx, [eax + eax*4]
and esi, 0xffff
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x6c]
and ecx, 0xffff
lea edx, [edx + eax*4 + 0x3c]
lea eax, [ecx + ecx*2]
fld dword [esp + eax*4 + 0x210]
lea ebx, [esp + eax*4 + 0x208]
lea eax, [esi + esi*2]
fcomp dword [0x5333ec]
lea eax, [esp + eax*4 + 0x208]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], eax
lea eax, [edi + edi*2]
lea eax, [esp + eax*4 + 0x208]
mov dword [esp + 0x28], eax
fnstsw ax
test ah, 0x41
jne 0x52297b
mov eax, dword [esp + 0x24]
fld dword [eax + 8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
jne 0x52297b
mov eax, dword [esp + 0x28]
fld dword [eax + 8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
jne 0x52297b
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
fld dword [eax + 4]
fsub dword [ebx + 4]
fld dword [ecx]
fsub dword [ebx]
fmulp st(1)
fld dword [ecx + 4]
fsub dword [ebx + 4]
fld dword [eax]
fsub dword [ebx]
fmulp st(1)
fsubp st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 1
jne 0x52283a
mov eax, dword [esp + 0x68]
test eax, eax
jne 0x52283a
mov ecx, dword [esp + 0x74]
lea eax, [esp + 0x20]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x13c]
mov edi, dword [ecx + 0x14]
lea esi, [esp + 0x6c]
mov dword [esp + 0x14], 3
xor ecx, ecx
mov cx, word [esi]
lea ecx, [ecx + ecx*4]
mov ebx, dword [edi + ecx*8 + 0x20]
mov dword [eax], ebx
mov ebx, dword [ebp + 0x30]
mov ecx, dword [edi + ecx*8 + 0x24]
mov dword [eax + 4], ecx
movsx ecx, word [edx + 0x28]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
test ebx, ebx
fmul dword [eax]
fstp dword [eax]
movsx ecx, word [edx + 0x2a]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fmul dword [eax + 4]
fstp dword [eax + 4]
jne 0x5227aa
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx]
fld dword [ecx + 8]
fmul dword [eax]
fstp dword [eax]
fld dword [ecx + 8]
fmul dword [eax + 4]
fstp dword [eax + 4]
mov ecx, dword [esp + 0xc]
add esi, 2
add ecx, 4
add eax, 8
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x14]
dec ecx
mov dword [esp + 0x14], ecx
jne 0x522756
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x5227d6
dec eax
jne 0x5227e1
mov eax, dword [edx + 0x24]
jmp 0x5227dd
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx + 0x24]
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x14c]
push ebx
push ecx
lea eax, [esp + 0x14c]
lea ecx, [esp + 0x144]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [ebp + 0x20]
push eax
push ecx
mov eax, dword [ebp + 0x1c]
movsx ecx, word [edx + 0x2a]
movsx edx, word [edx + 0x28]
push eax
push 0
push 0
push ecx
mov ecx, dword [esp + 0x4c]
push edx
mov edx, dword [ebp + 0x18]
push ecx
push eax
mov eax, dword [ebp + 0x14]
push edx
push eax
call fcn.00521110
add esp, 0x44
jmp 0x523080
mov eax, dword [ebp + 0x30]
test eax, eax
jne 0x52284d
mov eax, dword [esp + 0x68]
test eax, eax
je 0x523080
mov ecx, dword [esp + 0x74]
lea edi, [esp + 0x20]
lea esi, [esp + 0x6c]
mov dword [esp + 0x64], edi
mov eax, dword [ecx + 0x14]
lea ecx, [esp + 0x1c8]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x13c]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], 3
mov ebx, dword [esp + 0x14]
xor esi, esi
mov si, word [ebx]
mov ebx, dword [esp + 0xc]
lea esi, [esi + esi*4]
mov ebx, dword [ebx + esi*8 + 0x20]
mov dword [eax], ebx
mov ebx, dword [esp + 0xc]
mov esi, dword [ebx + esi*8 + 0x24]
mov dword [eax + 4], esi
movsx esi, word [edx + 0x28]
mov dword [esp + 0x10], esi
fild dword [esp + 0x10]
fmul dword [eax]
fstp dword [eax]
movsx esi, word [edx + 0x2a]
mov dword [esp + 0x10], esi
mov esi, dword [ebp + 0x30]
fild dword [esp + 0x10]
test esi, esi
fmul dword [eax + 4]
fstp dword [eax + 4]
jne 0x5228da
mov esi, dword [edi]
fld dword [eax]
fmul dword [esi + 8]
fstp dword [eax]
fld dword [eax + 4]
fmul dword [esi + 8]
fstp dword [eax + 4]
mov edi, dword [edi]
lea esi, [ecx - 8]
add eax, 8
mov ebx, dword [edi]
mov dword [esi], ebx
mov ebx, dword [edi + 4]
mov dword [esi + 4], ebx
mov edi, dword [edi + 8]
mov dword [esi + 8], edi
mov edi, dword [esp + 0x64]
fld dword [ecx]
fmul dword [0x534c9c]
lea esi, [ecx - 8]
add ecx, 0xc
mov dword [edi], esi
mov esi, dword [esp + 0x14]
add esi, 2
add edi, 4
fstp dword [ecx - 0xc]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x18]
dec esi
mov dword [esp + 0x64], edi
mov dword [esp + 0x18], esi
jne 0x52287e
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x52293e
dec eax
jne 0x522947
mov ecx, dword [edx + 0x24]
mov dword [esp + 0x1c], ecx
jmp 0x522947
mov eax, dword [0xa83b28]
mov dword [esp + 0x1c], eax
mov ecx, dword [ebp + 0x30]
lea eax, [esp + 0x14c]
push ecx
push eax
lea ecx, [esp + 0x14c]
lea eax, [esp + 0x144]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x34]
push eax
mov eax, dword [ebp + 0x20]
push ecx
push eax
jmp 0x52280d
mov eax, dword [esp + 0x74]
lea esi, [esi + esi*4]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 0x14]
mov dword [esp + 0xc], eax
fld dword [eax + esi*8]
fsub dword [eax + ecx*8]
fld dword [eax + esi*8 + 4]
lea esi, [eax + esi*8]
lea ecx, [eax + ecx*8]
fsub dword [ecx + 4]
fld dword [esi + 8]
fsub dword [ecx + 8]
lea esi, [edi + edi*4]
fld dword [eax + esi*8]
fsub dword [ecx]
lea eax, [eax + esi*8]
mov esi, dword [esp + 0x104]
fstp dword [esp + 0x178]
fld dword [eax + 4]
fsub dword [ecx + 4]
fstp dword [esp + 0x17c]
fld dword [eax + 8]
fsub dword [ecx + 8]
mov eax, dword [esi + 0xc]
mov esi, dword [esi + 0x10]
fld st(0)
fmul st(3)
fld dword [esp + 0x17c]
fmul st(3)
fsubp st(1)
fstp dword [esp + 0x130]
fmul st(3)
fld dword [esp + 0x178]
fmul st(2)
fsubp st(1)
fchs
fstp dword [esp + 0x134]
fstp st(0)
fld dword [esp + 0x17c]
fmulp st(2)
fld dword [esp + 0x178]
fmul st(1)
fsubp st(2)
fstp st(0)
fld dword [esp + 0x134]
fmul dword [eax + 4]
fld dword [esp + 0x130]
fmul dword [eax]
faddp st(1)
fld st(1)
fmul dword [eax + 8]
faddp st(1)
fstp dword [esp + 0x78]
fld dword [esp + 0x134]
fmul dword [eax + 0x10]
fld dword [esp + 0x130]
fmul dword [eax + 0xc]
mov edi, dword [esp + 0x78]
mov dword [esp + 0xc8], edi
faddp st(1)
fld st(1)
fmul dword [eax + 0x14]
faddp st(1)
fstp dword [esp + 0x7c]
fld dword [esp + 0x134]
fmul dword [eax + 0x1c]
fld dword [esp + 0x130]
fmul dword [eax + 0x18]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0xcc], edi
faddp st(1)
fxch st(1)
fmul dword [eax + 0x20]
faddp st(1)
fstp dword [esp + 0x80]
mov edi, dword [esp + 0x80]
mov dword [esp + 0xd0], edi
mov edi, dword [ebp + 0xc]
fld qword [esi]
fsub qword [edi]
fld qword [esi + 8]
fsub qword [edi + 8]
fstp dword [esp + 0x194]
fld qword [esi + 0x10]
fsub qword [edi + 0x10]
fstp dword [esp + 0x198]
fld dword [ecx + 8]
fmul dword [eax + 8]
fld dword [eax + 4]
fmul dword [ecx + 4]
faddp st(1)
fld dword [eax]
fmul dword [ecx]
faddp st(1)
fld dword [ecx + 4]
fmul dword [eax + 0x10]
fld dword [ecx + 8]
fmul dword [eax + 0x14]
faddp st(1)
fld dword [ecx]
fmul dword [eax + 0xc]
faddp st(1)
fstp dword [esp + 0x188]
fld dword [ecx + 4]
fmul dword [eax + 0x1c]
fld dword [ecx + 8]
fmul dword [eax + 0x20]
faddp st(1)
fld dword [ecx]
fmul dword [eax + 0x18]
faddp st(1)
fstp dword [esp + 0x18c]
faddp st(1)
fld dword [esp + 0x188]
fadd dword [esp + 0x194]
fld dword [esp + 0x18c]
fadd dword [esp + 0x198]
fld st(2)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x522b5a
fld st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x522b5a
fcom dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x522b9a
fld st(0)
fld st(2)
fld st(4)
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp dword [esp + 0x10]
fstp st(0)
fstp st(0)
fstp st(0)
fld dword [esp + 0x10]
fdivr qword [0x5333f8]
fxch st(3)
fmul st(3)
fxch st(3)
fxch st(2)
fmul st(2)
fxch st(2)
fxch st(1)
fmul st(1)
fxch st(1)
fstp st(0)
fld dword [esp + 0x78]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x522bd0
fld dword [esp + 0x7c]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x522bd0
fld dword [esp + 0x80]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x522c2b
fld dword [esp + 0x80]
fld dword [esp + 0x7c]
fld dword [esp + 0x78]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld st(3)
fmul st(4)
faddp st(1)
fsqrt
fstp dword [esp + 0x10]
fstp st(0)
fstp st(0)
fstp st(0)
fld dword [esp + 0x10]
fdivr qword [0x5333f8]
fld dword [esp + 0x78]
fmul st(1)
fstp dword [esp + 0xc8]
fld dword [esp + 0xcc]
fmul st(1)
fstp dword [esp + 0xcc]
fmul dword [esp + 0xd0]
jmp 0x522c32
fld dword [esp + 0xd0]
fxch st(1)
fmul st(1)
fxch st(2)
fmul dword [esp + 0xcc]
faddp st(2)
fxch st(2)
fmul dword [esp + 0xc8]
faddp st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 1
fstp st(0)
jne 0x522e24
mov eax, dword [esp + 0x68]
test eax, eax
jne 0x522e24
lea eax, [esp + 0x6c]
lea edi, [esp + 0x19c]
mov dword [esp + 0x14], eax
lea ebx, [esp + 0x20]
lea ecx, [esp + 0x13c]
mov dword [esp + 0x18], 3
mov esi, dword [esp + 0x14]
xor eax, eax
mov ax, word [esi]
mov esi, dword [esp + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, dword [esi + 0x20]
mov dword [ecx], eax
mov eax, dword [esi + 0x24]
mov dword [ecx + 4], eax
movsx eax, word [edx + 0x28]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul dword [ecx]
fstp dword [ecx]
movsx eax, word [edx + 0x2a]
mov dword [esp + 0x10], eax
mov eax, dword [ebx]
fild dword [esp + 0x10]
fmul dword [ecx + 4]
fstp dword [ecx + 4]
fld dword [eax + 8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
jne 0x522dd2
mov eax, dword [esi]
mov dword [ebx], edi
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x50], eax
mov eax, dword [esi + 8]
mov dword [esp + 0x54], eax
fld dword [esp + 0x54]
fmul dword [esp + 0x110]
fld dword [esp + 0x50]
fmul dword [esp + 0x10c]
faddp st(1)
fld dword [esp + 0x4c]
fmul dword [esp + 0x108]
faddp st(1)
fstp dword [esp + 0x160]
fld dword [esp + 0x54]
fmul dword [esp + 0x11c]
fld dword [esp + 0x50]
fmul dword [esp + 0x118]
mov eax, dword [esp + 0x160]
faddp st(1)
fld dword [esp + 0x4c]
fmul dword [esp + 0x114]
faddp st(1)
fstp dword [esp + 0x164]
fld dword [esp + 0x54]
fmul dword [esp + 0x128]
fld dword [esp + 0x50]
fmul dword [esp + 0x124]
faddp st(1)
fld dword [esp + 0x4c]
fmul dword [esp + 0x120]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 0x50], eax
faddp st(1)
fstp dword [esp + 0x168]
fld dword [esp + 0x160]
fadd dword [esp + 0x94]
fld dword [esp + 0x50]
fadd dword [esp + 0x98]
mov eax, dword [esp + 0x168]
mov dword [esp + 0x54], eax
fstp dword [esp + 0x50]
fld dword [esp + 0x54]
fadd dword [esp + 0x9c]
mov eax, dword [esp + 0x50]
fstp dword [edi + 8]
fstp dword [edi]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x14]
add ecx, 8
add eax, 2
add ebx, 4
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
add edi, 0xc
dec eax
mov dword [esp + 0x18], eax
jne 0x522c8d
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x522e05
dec eax
jne 0x522e10
mov ecx, dword [edx + 0x24]
jmp 0x522e0c
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0x24]
mov dword [esp + 0x1c], ecx
mov eax, dword [ebp + 0x1c]
mov ecx, eax
sar ecx, 1
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
jmp 0x52301a
mov eax, dword [ebp + 0x30]
test eax, eax
jne 0x522e37
mov eax, dword [esp + 0x68]
test eax, eax
je 0x523080
lea ecx, [esp + 0x6c]
lea edi, [esp + 0x1e4]
mov dword [esp + 0x14], ecx
lea ebx, [esp + 0x20]
lea ecx, [esp + 0x13c]
mov dword [esp + 0x18], 3
mov esi, dword [esp + 0x14]
xor eax, eax
mov ax, word [esi]
mov esi, dword [esp + 0xc]
lea eax, [eax + eax*4]
lea esi, [esi + eax*8]
mov eax, dword [esi + 0x20]
mov dword [ecx], eax
mov eax, dword [esi + 0x24]
mov dword [ecx + 4], eax
movsx eax, word [edx + 0x28]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fmul dword [ecx]
fstp dword [ecx]
movsx eax, word [edx + 0x2a]
mov dword [esp + 0x10], eax
mov eax, dword [ebx]
fild dword [esp + 0x10]
fmul dword [ecx + 4]
fstp dword [ecx + 4]
fld dword [eax + 8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
je 0x522ed6
mov eax, dword [ebx]
mov esi, edi
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [ebx]
mov eax, dword [eax + 4]
mov dword [esi + 4], eax
mov eax, dword [ebx]
mov dword [ebx], edi
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
fld dword [edi + 8]
fmul dword [0x534c9c]
fstp dword [edi + 8]
jmp 0x522fcb
mov eax, dword [esi]
mov dword [ebx], edi
mov dword [esp + 0x40], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x44], eax
mov eax, dword [esi + 8]
mov dword [esp + 0x48], eax
fld dword [esp + 0x48]
fmul dword [esp + 0x110]
fld dword [esp + 0x44]
fmul dword [esp + 0x10c]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x108]
faddp st(1)
fstp dword [esp + 0x154]
fld dword [esp + 0x48]
fmul dword [esp + 0x11c]
fld dword [esp + 0x44]
fmul dword [esp + 0x118]
mov eax, dword [esp + 0x154]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x114]
faddp st(1)
fstp dword [esp + 0x158]
fld dword [esp + 0x48]
fmul dword [esp + 0x128]
fld dword [esp + 0x44]
fmul dword [esp + 0x124]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x120]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 0x44], eax
faddp st(1)
fstp dword [esp + 0x15c]
fld dword [esp + 0x154]
fadd dword [esp + 0x94]
fld dword [esp + 0x44]
fadd dword [esp + 0x98]
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x48], eax
fstp dword [esp + 0x44]
fld dword [esp + 0x48]
fadd dword [esp + 0x9c]
mov eax, dword [esp + 0x44]
fmul dword [0x534b18]
fstp dword [edi + 8]
fstp dword [edi]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x14]
add ecx, 8
add eax, 2
add ebx, 4
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
add edi, 0xc
dec eax
mov dword [esp + 0x18], eax
jne 0x522e59
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x523002
dec eax
jne 0x52300b
mov ecx, dword [edx + 0x24]
mov dword [esp + 0x1c], ecx
jmp 0x52300b
mov eax, dword [0xa83b28]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x1c]
mov ecx, eax
sar ecx, 1
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
mov ecx, dword [ebp + 0x30]
push ecx
lea ecx, [esp + 0x150]
push ecx
lea ecx, [esp + 0x14c]
push ecx
lea ecx, [esp + 0x148]
fstp dword [esp + 0x18]
push ecx
mov ecx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x28]
push ecx
push ecx
mov ecx, dword [ebp + 0x28]
push ecx
mov ecx, dword [ebp + 0x24]
push ecx
mov ecx, dword [ebp + 0x20]
push ecx
push eax
movsx ecx, word [edx + 0x2a]
movsx edx, word [edx + 0x28]
push 0
push 0
push ecx
mov ecx, dword [esp + 0x5c]
push edx
mov edx, dword [ebp + 0x18]
push ecx
push eax
mov eax, dword [ebp + 0x14]
push edx
push eax
call fcn.00521960
add esp, 0x54
mov edx, dword [esp + 0x2c]
xor ecx, ecx
mov eax, 0x55555556
mov esi, dword [esp + 0x30]
mov cx, word [edx + 0xc]
mov ebx, dword [esp + 0x90]
imul ecx
mov eax, edx
inc esi
shr eax, 0x1f
add edx, eax
add ebx, 6
cmp esi, edx
mov dword [esp + 0x30], esi
mov dword [esp + 0x90], ebx
jl 0x5225bc
mov ebx, dword [ebp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ax, word [ecx + 0xe]
cmp ax, 0xffff
je 0x5230d9
and eax, 0xffff
lea ecx, [ecx + eax + 0x20]
jmp 0x522588
mov esi, dword [ebp + 0xc]
mov edi, dword [esp + 0xfc]
mov ecx, dword [esp + 0x100]
inc edi
mov dword [esp + 0xfc], edi
cmp edi, dword [ecx]
jl 0x521ebb
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret