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

Disassembly:
sub esp, 0x524
push ebx
push ebp
push edi
mov edi, dword [esp + 0x534]
mov eax, dword [edi + 0xc]
mov eax, dword [eax + 0xc]
cmp dword [eax + 0x20], 3
jne 0x523d71
mov ebx, dword [eax + 0x24]
xor ebp, ebp
mov dword [esp + 0xa8], ebx
cmp dword [ebx + 8], ebp
je 0x523d71
cmp ebx, ebp
jne 0x523d7d
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0x524
ret
mov ecx, dword [esp + 0x544]
mov edx, dword [esp + 0x540]
push esi
push ecx
push edx
mov dword [ebx + 0x28], ebp
call fcn.005210c0
push eax
lea eax, [esp + 0x340]
push str._s__s__05d.olm
push eax
call fcn.004a53b3
lea ecx, [esp + 0x348]
push ecx
call fcn.004b5b60
add esp, 0x18
test eax, eax
je 0x523e15
lea edx, [esp + 0x334]
push ebp
push edx
call fcn.004b5f00
mov esi, eax
add esp, 8
cmp dword [esi], 0x3df5c28f
jne 0x523e0c
mov eax, dword [edi + 0xc]
mov ecx, dword [eax + 0xc]
fld dword [ecx]
fcomp dword [esi + 4]
fnstsw ax
test ah, 0x40
je 0x523e0c
lea edx, [esi + 8]
add ecx, 4
push edx
push ecx
call fcn.0052d630
add esp, 8
test eax, eax
jge 0x523e0c
mov eax, dword [ebx + 4]
mov ecx, dword [esi + 0x2c]
cmp eax, ecx
je 0x523e96
push esi
call fcn.004b63d0
add esp, 4
mov eax, dword [ebx + 4]
push 4
lea ecx, [eax + eax*4]
lea edx, [eax + ecx*2]
lea eax, [edx*4 + 0x3c]
push eax
call fcn.004b0c60
mov ecx, dword [ebx + 4]
mov esi, eax
push 4
mov dword [esp + 0xd8], esi
mov dword [esi + 0x2c], ecx
mov eax, dword [ebx + 4]
lea edx, [eax + eax*4]
shl edx, 3
push edx
call fcn.004b0c60
mov dword [esi + 0x38], eax
mov eax, 1
mov dword [esi + 0x24], ebp
mov dword [esi + 0x28], eax
mov dword [0xa83d28], eax
lea eax, [esi + 8]
push eax
mov dword [esi + 0x30], ebp
mov dword [esi + 0x34], ebp
mov dword [esi + 4], 0x3dcccccd
mov dword [esi], 0x3df5c28f
call fcn.0052d440
mov eax, dword [esi + 0x2c]
add esp, 0x14
cmp eax, ebp
mov dword [esp + 0xc0], ebp
jle 0x5251c1
jmp 0x523f34
cmp dword [esp + 0x54c], ebp
jne 0x523e15
lea ecx, [esp + 0x334]
push ebp
push ecx
call fcn.004b5f00
mov esi, eax
add esp, 8
mov eax, dword [esi + 0x2c]
mov dword [esi + 0x38], ebp
cmp eax, ebp
mov dword [esi + 0x24], 1
lea edx, [eax + eax*4]
mov dword [esi + 0x28], ebp
lea ecx, [eax + edx*2]
lea ebx, [esi + ecx*4 + 0x3c]
jle 0x523efe
lea edi, [esi + 0x66]
movsx edx, word [edi - 2]
movsx eax, word [edi]
imul edx, eax
lea ecx, [edi - 0x2a]
mov dword [edi - 6], ebx
push ecx
lea ebx, [ebx + edx*4]
call fcn.00525320
mov eax, dword [esi + 0x2c]
add esp, 4
inc ebp
add edi, 0x2c
cmp ebp, eax
jl 0x523ed7
mov edx, dword [esi + 0x30]
mov edi, dword [0xa83b4c]
mov ecx, dword [0xa839f4]
add edi, edx
mov dword [0xa83b4c], edi
mov eax, dword [esi + 0x34]
add ecx, eax
mov eax, esi
pop esi
pop edi
pop ebp
mov dword [0xa839f4], ecx
pop ebx
add esp, 0x524
ret
mov ebx, dword [esp + 0xac]
mov eax, dword [ebx + 0x18]
mov ebx, dword [esi + 0x38]
lea ecx, [ebp + ebp*4]
test ebx, ebx
lea edx, [ebp + ecx*2]
lea eax, [eax + ebp*8]
lea edi, [esi + edx*4 + 0x3c]
mov dword [esp + 0x130], edi
je 0x523f5d
lea ecx, [ebp + ebp*4]
lea ebx, [ebx + ecx*8]
jmp 0x523f5f
xor ebx, ebx
mov dx, word [eax]
push 4
mov word [edi + 0x28], dx
mov ax, word [eax + 2]
mov word [edi + 0x2a], ax
mov dword [esp + 0xd4], ebx
movsx eax, ax
movsx ecx, dx
imul eax, ecx
shl eax, 2
push eax
call fcn.004b0c60
xor ecx, ecx
add esp, 8
cmp word [edi + 0x2a], cx
mov dword [edi + 0x24], eax
mov dword [esp + 0x44], ecx
jle 0x523fc8
xor eax, eax
cmp word [edi + 0x28], ax
jle 0x523fb7
mov edx, dword [edi + 0x24]
inc eax
mov dword [edx + ecx*4], 0xffffffff
inc ecx
movsx edx, word [edi + 0x28]
cmp eax, edx
jl 0x523fa3
mov eax, dword [esp + 0x44]
movsx edx, word [edi + 0x2a]
inc eax
cmp eax, edx
mov dword [esp + 0x44], eax
jl 0x523f9b
push edi
call fcn.00525320
add esp, 4
test ebx, ebx
je 0x5251ae
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
push 4
lea edx, [eax + eax*2]
shl edx, 2
push edx
call fcn.004b0c60
mov dword [ebx + 8], eax
push 4
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
lea edx, [eax + eax*2]
shl edx, 2
push edx
call fcn.004b0c60
mov dword [ebx + 0xc], eax
push 4
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
shl eax, 2
push eax
call fcn.004b0c60
mov dword [ebx + 0x10], eax
push 4
movsx edx, word [edi + 0x2a]
movsx eax, word [edi + 0x28]
imul edx, eax
shl edx, 2
push edx
call fcn.004b0c60
mov dword [ebx + 0x24], eax
push 4
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
lea edx, [eax + eax*2]
shl edx, 2
push edx
call fcn.004b0c60
mov dword [ebx], eax
push 4
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
lea edx, [eax + eax*2]
shl edx, 2
push edx
call fcn.004b0c60
mov dword [ebx + 4], eax
push 4
movsx eax, word [edi + 0x2a]
movsx ecx, word [edi + 0x28]
imul eax, ecx
push eax
call fcn.004b0c60
mov dword [ebx + 0x14], eax
push 4
movsx edx, word [edi + 0x2a]
movsx eax, word [edi + 0x28]
imul edx, eax
push edx
call fcn.004b0c60
mov dword [ebx + 0x18], eax
mov ecx, dword [0xa83b4c]
mov dword [ebx + 0x1c], ecx
xor ecx, ecx
xor ebp, ebp
add esp, 0x40
mov dword [ebx + 0x20], ecx
cmp word [edi + 0x2a], bp
mov dword [esp + 0x44], ecx
mov dword [esp + 0xa0], ebp
jle 0x5251a7
movsx edx, word [edi + 0x28]
xor eax, eax
mov dword [esp + 0x14], edx
test edx, edx
mov dword [esp + 0x1c], eax
jle 0x525196
fild dword [esp + 0x44]
inc ecx
mov dword [esp + 0xa8], ecx
fstp dword [esp + 0x11c]
fild dword [esp + 0xa8]
fstp dword [esp + 0x100]
fild dword [esp + 0x14]
fild dword [esp + 0x1c]
movsx edx, word [edi + 0x2a]
fdiv st(1)
mov dword [esp + 0x1c], edx
xor ecx, ecx
inc eax
mov dword [esp + 0xe0], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x14], ecx
mov dword [esp + 0xf0], 0x7f7fffff
fstp dword [esp + 0x34]
fild dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x10]
fstp dword [esp + 0x40]
fld dword [esp + 0x11c]
fdiv dword [esp + 0x40]
fstp dword [esp + 0x38]
fild dword [esp + 0x1c]
fdiv st(1)
fstp dword [esp + 0x24]
fstp st(0)
fld dword [esp + 0x100]
fdiv dword [esp + 0x40]
fstp dword [esp + 0x28]
fld dword [esp + 0x24]
fadd dword [esp + 0x34]
fmul dword [0x533504]
fstp dword [esp + 0x5c]
fld dword [esp + 0x28]
fadd dword [esp + 0x38]
fmul dword [0x533504]
fstp dword [esp + 0x60]
mov dword [eax + ebp*4], ecx
mov ecx, dword [esp + 0xac]
mov ecx, dword [ecx + 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 + 0x40], esi
test edx, edx
mov dword [esp + 0xe8], 0
jle 0x524c8e
jmp 0x5241e5
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x40]
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 + 0x66], ax
cmp cx, ax
mov word [esp + 0x64], cx
mov word [esp + 0x68], si
je 0x524c3b
cmp ax, si
je 0x524c3b
cmp si, cx
je 0x524c3b
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc0]
xor ecx, ecx
mov cx, word [edx + 0x12]
cmp ecx, eax
jne 0x524c3b
mov eax, dword [esp + 0xac]
mov ecx, dword [eax + 0x14]
mov eax, dword [esp + 0x64]
and eax, 0xffff
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x66]
and eax, 0xffff
lea ebx, [ecx + edx*8]
lea eax, [eax + eax*4]
fld dword [ebx + 0x20]
fcomp dword [esp + 0x34]
lea esi, [ebx + 0x20]
lea ebp, [ecx + eax*8]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x48], esi
and eax, 0xffff
lea edx, [ebp + 0x20]
mov dword [esp + 0x4c], edx
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
fnstsw ax
mov dword [esp + 0x10], ecx
add ecx, 0x20
test ah, 1
mov dword [esp + 0x50], ecx
je 0x5242bc
fld dword [edx]
fcomp dword [esp + 0x34]
fnstsw ax
test ah, 1
je 0x5242bc
fld dword [ecx]
fcomp dword [esp + 0x34]
fnstsw ax
test ah, 1
jne 0x524c3b
fld dword [esi]
fcomp dword [esp + 0x24]
fnstsw ax
test ah, 0x41
jne 0x5242ef
fld dword [edx]
fcomp dword [esp + 0x24]
fnstsw ax
test ah, 0x41
jne 0x5242ef
fld dword [ecx]
fcomp dword [esp + 0x24]
fnstsw ax
test ah, 0x41
je 0x524c3b
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
fld dword [esi + 4]
fcomp dword [esp + 0x38]
fnstsw ax
test ah, 1
je 0x524325
fld dword [edx + 4]
fcomp dword [esp + 0x38]
fnstsw ax
test ah, 1
je 0x524325
fld dword [ecx + 4]
fcomp dword [esp + 0x38]
fnstsw ax
test ah, 1
jne 0x524c3b
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
fld dword [esi + 4]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 0x41
jne 0x52435b
fld dword [edx + 4]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 0x41
jne 0x52435b
fld dword [ecx + 4]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 0x41
je 0x524c3b
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
fld dword [ecx + 4]
fsub dword [esi + 4]
fld dword [edx]
fsub dword [esi]
mov dword [esp + 0x20], 1
fmulp st(1)
fld dword [edx + 4]
fsub dword [esi + 4]
fld dword [ecx]
fsub dword [esi]
fmulp st(1)
fsubp st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
je 0x524392
mov dword [esp + 0x20], 0
mov ecx, 0x10
xor eax, eax
lea edi, [esp + 0x174]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x4c]
push ecx
push esi
call fcn.004b2950
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
fstp dword [esp + 0x10c]
push edi
push edx
call fcn.004b2950
fstp dword [esp + 0x118]
push esi
push edi
call fcn.004b2950
fld st(0)
fadd dword [esp + 0x120]
add esp, 0x18
fadd dword [esp + 0x104]
fmul dword [0x533504]
fld st(0)
fsubrp st(2)
fld st(0)
fsub dword [esp + 0x108]
fmulp st(2)
fld st(0)
fsub dword [esp + 0x104]
fmulp st(2)
fxch st(1)
fmul st(1)
fxch st(1)
fstp st(0)
fcom dword [0x5333ec]
fnstsw ax
test ah, 1
jne 0x524424
fsqrt
fstp dword [esp + 0xc4]
jmp 0x524431
fstp st(0)
mov dword [esp + 0xc4], 0
fld dword [ebp + 8]
fsub dword [ebx + 8]
mov eax, dword [esp + 0x10]
fld dword [ebp + 4]
fsub dword [ebx + 4]
fld dword [ebp]
fsub dword [ebx]
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)
fld dword [eax + 8]
fsub dword [ebp + 8]
fld dword [eax + 4]
fsub dword [ebp + 4]
fld dword [eax]
fsub dword [ebp]
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)
fld dword [ebx + 8]
fsub dword [eax + 8]
fld dword [ebx + 4]
fsub dword [eax + 4]
fld dword [ebx]
fsub dword [eax]
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)
fld st(0)
fadd st(2)
fadd st(3)
fmul dword [0x533504]
fld st(0)
fsub st(2)
fld st(1)
fsub st(4)
fmulp st(1)
fld st(1)
fsub st(5)
fmulp st(1)
fmul st(1)
fstp st(4)
fstp st(0)
fstp st(0)
fstp st(0)
fcom dword [0x5333ec]
fnstsw ax
test ah, 1
jne 0x5244ed
fsqrt
fstp dword [esp + 0xdc]
jmp 0x5244fa
fstp st(0)
mov dword [esp + 0xdc], 0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1b8], ecx
mov eax, ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1bc], edx
mov edx, dword [esp + 0x28]
mov dword [esp + 0x1c4], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x1c8], edx
mov dword [esp + 0x1d0], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1cc], eax
mov edx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1d4], edx
mov dword [esp + 0x1dc], ecx
mov edx, eax
mov edi, 2
mov ecx, 1
lea esi, [esp + 0x48]
mov dword [esp + 0x1d8], eax
mov dword [esp + 0x1e0], edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5245af
mov eax, ecx
mov ebp, 3
cdq
idiv ebp
mov ebx, dword [esi]
mov edx, dword [esp + edx*4 + 0x48]
jmp 0x5245bf
mov eax, ecx
mov ebx, 3
cdq
idiv ebx
mov ebx, dword [esp + edx*4 + 0x48]
mov edx, dword [esi]
fld dword [edx]
fsub dword [ebx]
test edi, edi
mov dword [esp + 0x18], edx
fstp dword [esp + 0x54]
fld dword [edx + 4]
fsub dword [ebx + 4]
fstp dword [esp + 0x58]
jle 0x52489f
lea eax, [edi + edi*2]
lea edx, [esp + 0x174]
lea ebp, [esp + 0x1b4]
mov dword [esp + 0xa4], edx
lea ecx, [esp + eax*8 + 0x1bc]
mov dword [esp + 0x30], ebp
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xec], edi
mov eax, dword [esp + 0xa4]
cmp dword [eax], 0
jne 0x524863
fld dword [esp + 0x58]
fcomp dword [0x5333ec]
fld dword [esp + 0x58]
xor edx, edx
fnstsw ax
test ah, 1
je 0x524637
fchs
fld dword [esp + 0x54]
fcomp dword [0x5333ec]
fld dword [esp + 0x54]
fnstsw ax
test ah, 1
je 0x52464e
fchs
fxch st(1)
fcomp st(1)
fnstsw ax
test ah, 0x41
fstp st(0)
jne 0x5246b7
lea ecx, [esp + 0x144]
mov esi, ebp
mov edi, 3
fld dword [esi + 4]
fsub dword [ebx + 4]
mov eax, dword [esp + 0x18]
fmul dword [esp + 0x54]
fdiv dword [esp + 0x58]
fadd dword [ebx]
fld dword [ebx + 4]
fcomp dword [eax + 4]
fnstsw ax
fcomp dword [esi]
test ah, 1
fnstsw ax
je 0x52469a
test ah, 0x41
je 0x5246a6
mov eax, 1
jmp 0x5246a8
test ah, 1
jne 0x5246a6
mov eax, 1
jmp 0x5246a8
xor eax, eax
mov dword [ecx], eax
add edx, eax
add esi, 8
add ecx, 4
dec edi
jne 0x524669
jmp 0x524721
fld dword [esp + 0x54]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x52472e
lea ecx, [esp + 0x144]
lea esi, [ebp + 4]
mov edi, 3
fld dword [esi - 4]
fsub dword [ebx]
mov eax, dword [esp + 0x18]
fmul dword [esp + 0x58]
fdiv dword [esp + 0x54]
fadd dword [ebx + 4]
fld dword [ebx]
fcomp dword [eax]
fnstsw ax
fcomp dword [esi]
test ah, 0x41
fnstsw ax
jne 0x524706
test ah, 0x41
je 0x524712
mov eax, 1
jmp 0x524714
test ah, 1
jne 0x524712
mov eax, 1
jmp 0x524714
xor eax, eax
mov dword [ecx], eax
add edx, eax
add esi, 8
add ecx, 4
dec edi
jne 0x5246d7
test edx, edx
je 0x524863
cmp edx, 3
jne 0x524740
mov ecx, dword [esp + 0xa4]
mov dword [ecx], 1
jmp 0x524863
cmp edx, 2
jne 0x5247b4
xor eax, eax
lea ecx, [esp + 0x144]
cmp dword [ecx], 0
jne 0x52475a
mov dword [esp + 0x140], eax
inc eax
add ecx, 4
cmp eax, 3
jl 0x52474e
mov esi, dword [esp + 0x140]
mov ecx, 3
mov edi, 3
lea eax, [esi + 1]
cdq
idiv ecx
lea eax, [esi + 2]
lea esi, [ebp + esi*8]
mov ecx, edx
cdq
idiv edi
lea eax, [ebp + ecx*8]
mov edi, edx
mov edx, dword [esp + 0x18]
push edx
push ebx
push esi
push eax
push eax
call fcn.005251d0
mov ecx, dword [esp + 0x2c]
lea eax, [ebp + edi*8]
push ecx
push ebx
push esi
push eax
push eax
call fcn.005251d0
add esp, 0x28
jmp 0x524863
xor eax, eax
lea ecx, [esp + 0x144]
cmp dword [ecx], 0
je 0x5247c9
mov dword [esp + 0x13c], eax
inc eax
add ecx, 4
cmp eax, 3
jl 0x5247bd
mov ecx, dword [esp + 0x13c]
mov esi, 3
mov edi, 3
mov ebp, dword [esp + 0x30]
lea eax, [ecx + 1]
cdq
idiv esi
lea eax, [ecx + 2]
mov esi, edx
cdq
idiv edi
mov eax, dword [esp + 0xc8]
lea edi, [ebp + esi*8]
mov esi, dword [ebp + esi*8]
mov dword [eax - 8], esi
mov esi, dword [edi + 4]
mov dword [eax - 4], esi
lea esi, [ebp + ecx*8]
lea ebp, [ebp + edx*8]
mov edx, dword [esp + 0x18]
push edx
push ebx
push esi
push ebp
push eax
call fcn.005251d0
mov eax, dword [esp + 0x2c]
push eax
push ebx
push esi
push edi
mov edi, dword [esp + 0xec]
lea ecx, [edi + 8]
push ecx
call fcn.005251d0
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x64]
push edx
push ebx
push esi
inc eax
add edi, 0x18
push ebp
push esi
mov dword [esp + 0x78], eax
mov dword [esp + 0x104], edi
call fcn.005251d0
mov ebp, dword [esp + 0x6c]
add esp, 0x3c
mov ecx, dword [esp + 0xa4]
mov eax, dword [esp + 0xec]
add ebp, 0x18
add ecx, 4
dec eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xec], eax
jne 0x52460e
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0xe4]
mov esi, dword [esp + 0x10]
inc ecx
add esi, 4
mov dword [esp + 0xe4], ecx
mov dword [esp + 0x10], esi
lea eax, [ecx - 1]
cmp eax, 3
jl 0x524595
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x524a45
mov ebx, 1
lea edi, [esp + 0x48]
mov esi, ebx
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5248eb
mov eax, esi
mov ebp, 3
cdq
idiv ebp
mov ecx, dword [edi]
mov edx, dword [esp + edx*4 + 0x48]
jmp 0x5248fb
mov eax, esi
mov ecx, 3
cdq
idiv ecx
mov ecx, dword [esp + edx*4 + 0x48]
mov edx, dword [edi]
fld dword [edx]
fsub dword [ecx]
fld dword [edx + 4]
fsub dword [ecx + 4]
fcom dword [0x5333ec]
fld st(0)
fnstsw ax
test ah, 1
je 0x524916
fchs
fld st(2)
fcomp dword [0x5333ec]
fld st(2)
fnstsw ax
test ah, 1
je 0x524929
fchs
fxch st(1)
fcomp st(1)
fnstsw ax
test ah, 0x41
fstp st(0)
jne 0x524996
fld dword [esp + 0x60]
fsub dword [ecx + 4]
fmulp st(2)
fxch st(1)
fdiv st(1)
fadd dword [ecx]
fxch st(1)
fstp st(0)
fld dword [ecx + 4]
fcomp dword [edx + 4]
fnstsw ax
fcomp dword [esp + 0x5c]
test ah, 1
fnstsw ax
je 0x524974
test ah, 0x41
je 0x524989
mov eax, 1
xor edx, edx
test eax, eax
sete dl
and ebx, edx
jmp 0x524a06
test ah, 1
jne 0x524989
mov eax, 1
xor edx, edx
test eax, eax
sete dl
and ebx, edx
jmp 0x524a06
xor eax, eax
xor edx, edx
test eax, eax
sete dl
and ebx, edx
jmp 0x524a06
fld st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x524a00
fld dword [esp + 0x5c]
fsub dword [ecx]
fmul st(1)
fdivrp st(2)
fxch st(1)
fadd dword [ecx + 4]
fxch st(1)
fstp st(0)
fld dword [ecx]
fcomp dword [edx]
fnstsw ax
fcomp dword [esp + 0x60]
test ah, 0x41
fnstsw ax
jne 0x5249de
test ah, 0x41
je 0x5249f3
mov eax, 1
xor ecx, ecx
test eax, eax
sete cl
and ebx, ecx
jmp 0x524a06
test ah, 1
jne 0x5249f3
mov eax, 1
xor ecx, ecx
test eax, eax
sete cl
and ebx, ecx
jmp 0x524a06
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
and ebx, ecx
jmp 0x524a06
fstp st(0)
fstp st(0)
xor ebx, ebx
inc esi
add edi, 4
lea edx, [esi - 1]
cmp edx, 3
jl 0x5248d1
test ebx, ebx
je 0x524a45
mov eax, dword [esp + 0x64]
mov cx, word [esp + 0x68]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x120]
mov word [esp + 0x124], cx
mov dword [esp + 0x78], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xb0], 0
test eax, eax
jle 0x524c3b
mov ecx, eax
lea ebp, [esp + 0x174]
lea esi, [esp + 0x1c4]
mov dword [esp + 0x10], ecx
cmp dword [ebp], 0
jne 0x524b05
lea edi, [esi - 8]
lea ebx, [esi - 0x10]
push edi
push ebx
call fcn.004b2950
fstp dword [esp + 0x118]
push esi
push edi
call fcn.004b2950
fstp dword [esp + 0x124]
push ebx
push esi
call fcn.004b2950
fld st(0)
fadd dword [esp + 0x12c]
add esp, 0x18
fadd dword [esp + 0x110]
fmul dword [0x533504]
fld st(0)
fsubrp st(2)
fld st(0)
fsub dword [esp + 0x114]
fmulp st(2)
fld st(0)
fsub dword [esp + 0x110]
fmulp st(2)
fxch st(1)
fmul st(1)
fxch st(1)
fstp st(0)
fcom dword [0x5333ec]
fnstsw ax
test ah, 1
jne 0x524aef
fsqrt
jmp 0x524af7
fstp st(0)
fld dword [0x5333ec]
fadd dword [esp + 0xb0]
fstp dword [esp + 0xb0]
mov eax, dword [esp + 0x10]
add ebp, 4
add esi, 0x18
dec eax
mov dword [esp + 0x10], eax
jne 0x524a70
fld dword [esp + 0xb0]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
jne 0x524c3b
fld dword [esp + 0xc4]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x524b73
fld dword [esp + 0xb0]
fmul dword [esp + 0xdc]
mov edx, dword [esp + 0xd0]
mov ecx, dword [esp + 0xa0]
fdiv dword [esp + 0xc4]
mov eax, dword [edx + 0x10]
lea eax, [eax + ecx*4]
fadd dword [eax]
fstp dword [eax]
mov ecx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x64]
mov ebx, dword [esp + 0x2c]
lea edx, [esp + 0x1b4]
lea eax, [esp + 0x174]
mov dword [esp + 0x30], edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x20]
cmp dword [edx], 0
jne 0x524c16
mov esi, dword [esp + 0x30]
mov edi, 3
lea eax, [esp + 0x5c]
push eax
push esi
call fcn.004b2950
fld dword [esp + 0xf8]
fcomp st(1)
add esp, 8
fnstsw ax
test ah, 0x41
jne 0x524c0e
mov cx, word [esp + 0x68]
mov eax, dword [esi]
fstp dword [esp + 0xf0]
mov word [esp + 0x138], cx
mov ecx, dword [esi + 4]
lea edx, [esp + 0x134]
mov dword [esp + 0x134], ebp
mov dword [esp + 0xe0], edx
mov dword [esp + 0xa8], ebx
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], ecx
jmp 0x524c10
fstp st(0)
add esi, 8
dec edi
jne 0x524bab
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
add edx, 4
add ecx, 0x18
dec eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], eax
jne 0x524b99
mov edx, dword [esp + 0x2c]
xor ecx, ecx
mov eax, 0x55555556
mov esi, dword [esp + 0xe8]
mov cx, word [edx + 0xc]
mov ebx, dword [esp + 0x40]
imul ecx
mov eax, edx
inc esi
shr eax, 0x1f
add edx, eax
add ebx, 6
cmp esi, edx
mov dword [esp + 0xe8], esi
mov dword [esp + 0x40], ebx
jl 0x5241dd
mov edi, dword [esp + 0x130]
mov ebx, dword [esp + 0xd0]
mov ebp, dword [esp + 0xa0]
mov ecx, dword [esp + 0x2c]
mov ax, word [ecx + 0xe]
cmp ax, 0xffff
je 0x524ca6
and eax, 0xffff
lea ecx, [ecx + eax + 0x20]
jmp 0x5241a9
mov esi, dword [esp + 0x78]
test esi, esi
jne 0x524cd8
mov ecx, dword [esp + 0x128]
mov esi, dword [esp + 0xe0]
mov edx, dword [esp + 0x12c]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x78], esi
mov dword [esp + 0x60], edx
jmp 0x524cdc
mov ecx, dword [esp + 0x14]
mov eax, dword [ebx + 0x10]
fld dword [eax + ebp*4]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
jne 0x524d5f
mov edx, dword [ebx + 0x24]
mov eax, dword [0xa83b4c]
mov dword [edx + ebp*4], eax
mov edx, dword [ebx + 0x14]
mov al, byte [ecx + 0x1e]
mov byte [edx + ebp], al
mov edx, dword [ebx + 0x18]
mov al, byte [ecx + 0x10]
mov byte [edx + ebp], al
mov al, byte [ecx + 0x1e]
test al, al
je 0x524d3b
mov eax, dword [esp + 0x53c]
test eax, eax
jne 0x524d3b
mov edx, dword [0xa839f4]
mov eax, dword [esp + 0xcc]
inc edx
mov dword [0xa839f4], edx
mov ecx, dword [eax + 0x34]
inc ecx
mov dword [eax + 0x34], ecx
jmp 0x524d42
mov eax, dword [esp + 0xcc]
mov edx, dword [0xa83b4c]
inc edx
mov dword [0xa83b4c], edx
mov ecx, dword [eax + 0x30]
inc ecx
mov dword [eax + 0x30], ecx
mov eax, dword [ebx + 0x20]
inc eax
mov dword [ebx + 0x20], eax
jmp 0x524d69
mov ecx, dword [ebx + 0x24]
mov dword [ecx + ebp*4], 0xffffffff
test esi, esi
je 0x52516b
mov edx, dword [esp + 0xac]
xor eax, eax
mov ecx, dword [edx + 0x14]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x14], ecx
mov ax, word [edx]
lea eax, [eax + eax*4]
lea esi, [ecx + eax*8]
xor eax, eax
mov ax, word [edx + 2]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*8]
xor eax, eax
mov ax, word [edx + 4]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x14]
fld dword [eax + edx*8 + 0x24]
fsub dword [esi + 0x24]
fld dword [ecx + 0x20]
lea edx, [eax + edx*8]
fsub dword [esi + 0x20]
fmulp st(1)
fld dword [edx + 0x20]
fsub dword [esi + 0x20]
fld dword [ecx + 0x24]
fsub dword [esi + 0x24]
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
fmulp st(1)
mov dword [esp + 0xfc], 0x3f800000
fsubp st(1)
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x41
je 0x524e02
mov dword [esp + 0xfc], 0xbf800000
fld dword [ecx]
fsub dword [esi]
fstp dword [esp + 0x88]
fld dword [ecx + 4]
fsub dword [esi + 4]
fstp dword [esp + 0x8c]
fld dword [ecx + 8]
fsub dword [esi + 8]
fstp dword [esp + 0x90]
fld dword [edx]
fsub dword [esi]
fstp dword [esp + 0x6c]
fld dword [edx + 4]
fsub dword [esi + 4]
fstp dword [esp + 0x70]
fld dword [edx + 8]
fsub dword [esi + 8]
fst dword [esp + 0x74]
fmul dword [esp + 0x8c]
fld dword [esp + 0x70]
fmul dword [esp + 0x90]
fsubp st(1)
fstp dword [esp + 0xb4]
fld dword [esp + 0x74]
fmul dword [esp + 0x88]
fld dword [esp + 0x6c]
fmul dword [esp + 0x90]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x94], eax
fsubp st(1)
fchs
fstp dword [esp + 0xb8]
fld dword [esp + 0x70]
fmul dword [esp + 0x88]
fld dword [esp + 0x6c]
fmul dword [esp + 0x8c]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x98], eax
fsubp st(1)
fstp dword [esp + 0xbc]
fld dword [esp + 0xb4]
fcomp dword [0x5333ec]
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x9c], eax
fnstsw ax
test ah, 0x40
je 0x524f04
fld dword [esp + 0xb8]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
je 0x524f04
fld dword [esp + 0xbc]
fcomp dword [0x5333ec]
fnstsw ax
test ah, 0x40
jne 0x524f60
fld dword [esp + 0xbc]
fld dword [esp + 0xb8]
fld dword [esp + 0xb4]
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 + 0xb4]
fmul st(1)
fstp dword [esp + 0x94]
fld dword [esp + 0x98]
fmul st(1)
fstp dword [esp + 0x98]
fmul dword [esp + 0x9c]
jmp 0x524f67
fld dword [esp + 0x9c]
fld dword [esp + 0x94]
fchs
fstp dword [esp + 0x94]
fld dword [esp + 0x98]
lea eax, [ebp + ebp*2]
mov ebp, dword [ebx]
shl eax, 2
fchs
fstp dword [esp + 0x98]
mov dword [esp + 0x14], eax
add eax, ebp
mov ebp, dword [esp + 0x94]
mov dword [eax], ebp
mov ebp, dword [esp + 0x98]
fchs
fstp dword [esp + 0x9c]
mov dword [eax + 4], ebp
mov ebp, dword [esp + 0x9c]
mov dword [eax + 8], ebp
lea eax, [esp + 0x15c]
fld dword [ecx + 0x20]
fsub dword [esi + 0x20]
fstp dword [esp + 0x15c]
fld dword [ecx + 0x24]
fsub dword [esi + 0x24]
mov dword [esp + 0x164], 0
lea ecx, [esp + 0xf4]
push ecx
lea ecx, [esp + 0x154]
fstp dword [esp + 0x164]
fld dword [edx + 0x20]
fsub dword [esi + 0x20]
fstp dword [esp + 0x16c]
fld dword [edx + 0x24]
fsub dword [esi + 0x24]
mov dword [esp + 0x174], 0
lea edx, [esp + 0x16c]
push edx
push eax
lea edx, [esp + 0xe0]
push ecx
fstp dword [esp + 0x17c]
fld dword [esp + 0x6c]
fsub dword [esi + 0x20]
lea eax, [esp + 0xe8]
push edx
push eax
fstp dword [esp + 0x168]
fld dword [esp + 0x78]
fsub dword [esi + 0x24]
mov dword [esp + 0x170], 0
fstp dword [esp + 0x16c]
call fcn.004b2d90
fld dword [esp + 0xf0]
fmul dword [esp + 0xa0]
fld dword [esp + 0xf0]
fmul dword [esp + 0xa4]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov dword [esp + 0x94], ecx
mov eax, dword [esi + 8]
mov dword [esp + 0x98], edx
add esp, 0x18
fstp dword [esp + 0x8c]
fld dword [esp + 0xd8]
fmul dword [esp + 0x90]
mov dword [esp + 0x84], eax
fstp dword [esp + 0x90]
fld dword [esp + 0xd4]
fmul dword [esp + 0x6c]
fstp dword [esp + 0x6c]
fld dword [esp + 0xd4]
fmul dword [esp + 0x70]
fstp dword [esp + 0x70]
fld dword [esp + 0xd4]
fmul dword [esp + 0x74]
fstp dword [esp + 0x74]
fadd dword [esp + 0x7c]
fld dword [esp + 0x80]
fadd dword [esp + 0x8c]
fstp dword [esp + 0x80]
fld dword [esp + 0x84]
fadd dword [esp + 0x90]
mov ecx, dword [ebx + 4]
mov eax, dword [esp + 0x14]
add ecx, eax
mov ebp, dword [esp + 0xa0]
fstp dword [esp + 0x84]
fadd dword [esp + 0x6c]
fstp dword [esp + 0x7c]
fld dword [esp + 0x80]
fadd dword [esp + 0x70]
mov edx, dword [esp + 0x7c]
mov dword [ecx], edx
fstp dword [esp + 0x80]
fld dword [esp + 0x84]
fadd dword [esp + 0x74]
mov eax, dword [esp + 0x80]
mov dword [ecx + 4], eax
fstp dword [esp + 0x84]
mov edx, dword [esp + 0x84]
mov dword [ecx + 8], edx
movsx ecx, word [edi + 0x28]
mov eax, dword [esp + 0x1c]
inc ebp
cmp eax, ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0xa0], ebp
mov dword [esp + 0x14], ecx
jl 0x524105
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0xcc]
movsx eax, word [edi + 0x2a]
inc ecx
cmp ecx, eax
mov dword [esp + 0x44], ecx
jl 0x5240ce
mov ebp, dword [esp + 0xc0]
mov eax, dword [esi + 0x2c]
inc ebp
cmp ebp, eax
mov dword [esp + 0xc0], ebp
jl 0x523f2d
mov eax, esi
pop esi
pop edi
pop ebp
pop ebx
add esp, 0x524
ret