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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x148f8
call fcn.0040b6f0
fild dword [0x419044]
lea eax, [esp + 0xc8f0]
push ebx
sub eax, 0x800
push esi
fidiv dword [0x419040]
mov dword [esp + 0x90], eax
lea eax, [esp + 0x58f8]
sub eax, 0x800
push edi
mov dword [esp + 0x90], eax
mov eax, dword [ebp + 0x10]
xor ecx, ecx
mov dword [esp + 0xc4], 0
lea ebx, [eax*8]
mov dword [esp + 0xc8], 0
push ebx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x2100], ecx
mov dword [esp + 0xf900], ecx
mov dword [esp + 0xf904], ecx
mov dword [esp + 0x8c], ebx
fstp qword [esp + 0xf0]
call fcn.0040b285
fild dword [ebp + 0x10]
mov ecx, ebx
mov edi, eax
mov edx, ecx
mov esi, dword [ebp + 0x58]
fstp qword [esp + 0xe0]
fild dword [ebp + 0x18]
xor eax, eax
mov dword [esp + 0xa0], edi
shr ecx, 2
fsub qword [ebp + 0x20]
fld qword [esp + 0xe0]
fsub qword [ebp + 0x28]
rep stosd dword es:[edi], eax
fdivp st(1)
mov ecx, edx
push 0x78
and ecx, 3
push esi
rep stosb byte es:[edi], al
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0x3ff00000
fstp qword [esp + 0xf0]
fld qword [0x418158]
fdiv qword [esp + 0xf0]
fstp qword [esp + 0xd8]
call fcn.0040b4a0
add esp, 0xc
test eax, eax
je 0x4040e0
lea ecx, [esp + 0x4c]
inc eax
push ecx
push 0x41948c
push eax
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
call fcn.0040b55c
fld qword [esp + 0x58]
fcomp qword [0x4182d0]
add esp, 0xc
fnstsw ax
test ah, 1
je 0x40408f
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0xc04e0000
jmp 0x4040b0
fld qword [esp + 0x4c]
fcomp qword [0x4182c8]
fnstsw ax
test ah, 0x41
jne 0x4040b0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0x404e0000
fld qword [0x418228]
fld qword [esp + 0x4c]
fmul qword [0x4181b0]
call fcn.0040b720
fstp qword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
push edx
push eax
push 0x419490
call fcn.0040b6b5
add esp, 0xc
push 0x73
push esi
call fcn.0040b4a0
add esp, 8
test eax, eax
je 0x40412a
lea ecx, [esp + 0x64]
inc eax
push ecx
push 0x41949c
push eax
call fcn.0040b55c
mov ecx, dword [esp + 0x70]
mov edi, 0xa
mov eax, ecx
add esp, 0xc
cdq
idiv edi
mov eax, 0x66666667
mov dword [esp + 0x68], edx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x64], edx
push 0x77
push esi
call fcn.0040b4a0
add esp, 8
test eax, eax
je 0x404182
lea ecx, [esp + 0x5c]
inc eax
push ecx
push 0x4194a0
push eax
call fcn.0040b55c
mov ecx, dword [esp + 0x68]
mov esi, 0xa
mov eax, ecx
cdq
idiv esi
mov eax, 0x66666667
mov esi, edx
imul ecx
sar edx, 2
mov eax, edx
push esi
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x70], esi
push edx
push 0x4194a4
mov dword [esp + 0x74], edx
call fcn.0040b6b5
add esp, 0x18
fild dword [esp + 0x60]
xor eax, eax
mov dword [esp + 0x10], eax
fadd qword [esp + 0xcc]
fstp qword [esp + 0xcc]
fild dword [esp + 0x10]
inc eax
cmp eax, 0x400
mov dword [esp + 0x10], eax
fmul qword [0x4182c0]
fld st(0)
fcos
fstp qword [esp + eax*8 + 0x38f4]
fld st(0)
fsin
fstp qword [esp + eax*8 + 0x118fc]
fmul qword [0x418268]
fsin
fstp qword [esp + eax*8 + 0x68f4]
jl 0x40419a
xor ecx, ecx
lea eax, [esp + 0x28fc]
mov dword [esp + 0x10], ecx
mov edx, 0x3ff00000
cmp ecx, 0x80
jge 0x40420b
fild dword [esp + 0x10]
fmul qword [0x4182b8]
fcos
fmul qword [0x418268]
fsubr qword [0x418268]
fstp qword [eax]
jmp 0x404214
mov dword [eax], 0
mov dword [eax + 4], edx
inc ecx
add eax, 8
cmp ecx, 0x200
mov dword [esp + 0x10], ecx
jle 0x4041e7
mov ecx, 0x7fe
lea esi, [esp + 0x88fc]
lea edi, [esp + 0x8904]
mov dword [esp + 0x88fc], 0
mov dword [esp + 0x8900], 0x3ff00000
or eax, 0xffffffff
rep movsd dword es:[edi], dword [esi]
push 0x4194b4
mov dword [esp + 0x64], eax
mov dword [esp + 0x74], eax
call fcn.0040b590
mov ecx, dword [ebp + 0x10]
add esp, 4
mov dword [esp + 0x10], 0
lea eax, [ecx + 0x200]
test eax, eax
jle 0x4051aa
fild dword [esp + 0x10]
fst qword [esp + 0x54]
fcomp qword [ebp + 0x28]
fld qword [esp + 0x54]
fnstsw ax
test ah, 1
je 0x4042a1
fmul qword [0x419048]
fiadd dword [ebp + 0x1c]
jmp 0x4042b1
fsub qword [ebp + 0x28]
fmul qword [esp + 0xe4]
fiadd dword [ebp + 0x1c]
fadd qword [ebp + 0x20]
call fcn.0040b0c0
mov ebx, eax
cdq
and edx, 0x1ff
add eax, edx
mov esi, eax
mov eax, ebx
sar esi, 9
and eax, 0x800001ff
mov dword [esp + 0x8c], esi
jns 0x4042dd
dec eax
or eax, 0xfffffe00
inc eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x10]
cdq
and edx, 0x1ff
add eax, edx
mov ecx, eax
mov eax, dword [esp + 0x70]
sar ecx, 9
cmp ecx, eax
mov dword [esp + 0x98], ecx
je 0x40431f
mov eax, ecx
mov edi, 5
cdq
idiv edi
test edx, edx
jne 0x40431f
push ecx
push esi
push 0x4194c0
call fcn.0040b6b5
add esp, 0xc
cmp dword [esp + 0x60], esi
je 0x404e7a
mov edx, dword [esp + 0x8c]
mov eax, dword [ebp + 0x4c]
shl edx, 4
fld qword [edx + eax]
fcom qword [0x418200]
lea ecx, [edx + eax]
fnstsw ax
test ah, 0x41
je 0x40434e
fstp st(0)
fld qword [ebp + 0x50]
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], eax
fld qword [esp + 0x7c]
fcomp qword [0x418200]
fnstsw ax
test ah, 0x41
je 0x404381
mov ecx, dword [ebp + 0x50]
mov edx, dword [ebp + 0x54]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], edx
fcom qword [esp + 0x7c]
fnstsw ax
test ah, 1
je 0x404392
fstp st(0)
fld qword [esp + 0x7c]
fild dword [0x419040]
fdivr qword [0x4181e8]
fxch st(1)
fdiv qword [ebp + 0x34]
fmulp st(1)
fstp qword [esp + 0x74]
fld qword [0x418168]
fdiv qword [esp + 0x74]
fstp qword [esp + 0xf4]
fld qword [esp + 0x54]
fcomp qword [ebp + 0x28]
fnstsw ax
test ah, 1
je 0x404415
mov esi, dword [esp + 0x10]
lea eax, [esi + 0x200]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fcomp qword [ebp + 0x28]
fnstsw ax
test ah, 1
je 0x4043f6
fld qword [0x4181c0]
fdiv qword [0x419048]
fstp qword [esp + 0x14]
jmp 0x40442a
fld qword [0x418158]
fdiv qword [0x419048]
fadd qword [esp + 0xcc]
fmul qword [0x4182b0]
fstp qword [esp + 0x14]
jmp 0x40442a
fld qword [esp + 0xcc]
fmul qword [0x4181c0]
mov esi, dword [esp + 0x10]
fstp qword [esp + 0x14]
fld qword [esp + 0x14]
fmul qword [0x4181e0]
sub esp, 8
fstp qword [esp]
call fcn.0040b0e7
fiadd dword [esp + 0x64]
add esp, 8
fsub qword [0x418158]
call fcn.0040b0c0
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x38], eax
cmp esi, edi
mov eax, esi
jl 0x404460
mov eax, edi
mov ecx, dword [ebp + 0x48]
cdq
fld qword [esp + 0x14]
idiv ecx
fadd qword [esp + 0x54]
fcom qword [esp + 0xdc]
mov esi, eax
fnstsw ax
test ah, 1
je 0x40448d
fild dword [ebp + 0x48]
sub esp, 8
fdivr st(1)
fstp qword [esp]
fstp st(0)
jmp 0x4044a2
mov eax, edi
cdq
fstp st(0)
idiv ecx
sub esp, 8
mov dword [esp + 0x28], eax
fild dword [esp + 0x28]
fstp qword [esp]
call fcn.0040b0e7
add esp, 8
call fcn.0040b0c0
mov ecx, dword [ebp + 0x44]
cmp esi, eax
fld qword [ecx + esi*8]
lea ecx, [ecx + esi*8]
jg 0x4044d4
sub eax, esi
inc eax
mov edx, eax
fcom qword [ecx]
fnstsw ax
test ah, 1
je 0x4044ce
fstp st(0)
fld qword [ecx]
add ecx, 8
dec edx
jne 0x4044c1
fild dword [0x419044]
mov edx, dword [esp + 0x5c]
mov ecx, 0x800
lea esi, [esp + 0x88fc]
lea edi, [esp + 0xa8fc]
fdivr qword [0x4181e8]
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x800
xor eax, eax
lea edi, [esp + 0xd8fc]
mov dword [esp + 0xbc], eax
rep stosd dword es:[edi], eax
mov dword [esp + 0xc0], eax
mov eax, edx
neg eax
cmp eax, edx
mov dword [esp + 0x1c], eax
fmul st(1)
fstp qword [esp + 0x54]
fstp st(0)
fld qword [0x418168]
fdiv qword [esp + 0x54]
fstp qword [esp + 0xd4]
jg 0x404684
shl eax, 8
lea edx, [eax + ebx - 0x100]
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0xc]
mov edx, dword [ebp + 0x14]
xor eax, eax
mov ax, word [0x4206ea]
push eax
push 0x400
push ecx
lea eax, [esp + 0x108]
push edx
push eax
call fcn.00408910
add esp, 0x14
xor eax, eax
fld qword [esp + eax + 0x38fc]
fmul qword [0x418268]
add eax, 8
cmp eax, 0x2000
fsubr qword [0x418268]
fmul qword [esp + eax + 0xf4]
fstp qword [esp + eax + 0xf4]
jl 0x404577
lea ecx, [esp + 0x11904]
lea edx, [esp + 0x20fc]
push ecx
lea eax, [esp + 0x100]
push edx
push eax
push 1
push 0x400
call fcn.00405ed0
fld qword [esp + 0x110]
fabs
fmul qword [0x4182a8]
add esp, 0x14
lea edi, [esp + 0xd904]
lea esi, [esp + 0x114]
mov ebx, 0x1ff
fstp qword [esp + 0xd8fc]
fld qword [esp + 0x104]
fabs
fmul qword [0x4182a8]
fstp qword [esp + 0xe8fc]
mov ecx, dword [esi - 8]
mov edx, dword [esi - 4]
mov eax, dword [esi]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 4]
mov dword [esp + 0x30], edx
mov edx, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x30]
push edx
mov edx, dword [esp + 0x30]
push eax
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.00415e66
fmul qword [0x4182a8]
add esp, 0x10
add esi, 0x10
fadd qword [edi]
add edi, 8
dec ebx
fstp qword [edi - 8]
jne 0x404608
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x1c]
fld qword [esp + 0xbc]
fadd qword [0x418158]
add edx, 0x100
inc eax
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x5c]
cmp eax, edx
mov dword [esp + 0x1c], eax
fstp qword [esp + 0xbc]
jle 0x40454e
mov ecx, 0x402
xor eax, eax
lea edi, [esp + 0xf904]
mov dword [esp + 0xac], eax
rep stosd dword es:[edi], eax
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x38]
neg edx
cmp edx, eax
mov dword [esp + 0x1c], edx
jg 0x40492d
mov eax, edx
mov edx, dword [esp + 0x10]
mov ebx, dword [ebp + 8]
shl eax, 8
lea esi, [eax + edx]
lea ecx, [eax + edx]
neg ecx
lea edi, [esi*8]
mov dword [esp + 0x44], esi
add ebx, edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0xc], ebx
mov ebx, dword [ebp + 0x10]
sub ebx, eax
mov eax, 0x2000
sub ebx, edx
lea edx, [esp + 0xfc]
sub edx, edi
mov edi, dword [ebp + 8]
sub eax, edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x38]
sub eax, edi
mov dword [esp + 0x40], edx
shl ecx, 3
shl ebx, 3
inc eax
mov dword [esp + 0x48], ecx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x10]
jmp 0x40472c
mov esi, dword [esp + 0x44]
mov eax, dword [ebp + 0x10]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
cmp esi, 0xfffffc00
jge 0x404749
mov ecx, 0x800
xor eax, eax
lea edi, [esp + 0xfc]
rep stosd dword es:[edi], eax
jmp 0x4047ea
test esi, esi
jge 0x404783
mov esi, ecx
xor eax, eax
lea edi, [esp + 0xfc]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
mov esi, dword [ebp + 8]
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
add ecx, eax
mov edi, edx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x4047ea
cmp esi, eax
jge 0x404734
add eax, 0xfffffc00
cmp esi, eax
jl 0x4047d8
mov esi, dword [esp + 0xc]
mov ecx, ebx
mov eax, ecx
lea edi, [esp + 0xfc]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x3c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x88]
sub eax, edi
lea edi, [esp + ebx + 0xfc]
add eax, 0x2000
mov ecx, eax
xor eax, eax
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
jmp 0x4047ea
mov esi, dword [esp + 0xc]
mov ecx, 0x800
lea edi, [esp + 0xfc]
rep movsd dword es:[edi], dword [esi]
xor eax, eax
fld qword [esp + eax + 0x38fc]
fmul qword [0x418268]
add eax, 8
cmp eax, 0x2000
fsubr qword [0x418268]
fmul qword [esp + eax + 0xf4]
fstp qword [esp + eax + 0xf4]
jl 0x4047ec
lea eax, [esp + 0x11904]
lea ecx, [esp + 0x20fc]
push eax
lea edx, [esp + 0x100]
push ecx
push edx
push 1
push 0x400
call fcn.00405ed0
fld qword [esp + 0x110]
fabs
fmul qword [0x4182a8]
add esp, 0x14
lea edi, [esp + 0xf90c]
lea esi, [esp + 0x10c]
mov dword [esp + 0x38], 0x1ff
fstp qword [esp + 0xf904]
fld qword [esp + 0x104]
fabs
fmul qword [0x4182a8]
fstp qword [esp + 0x10904]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, dword [esi - 8]
mov dword [esp + 0x2c], eax
mov eax, dword [esi - 4]
mov dword [esp + 0x30], ecx
mov ecx, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x30]
push edx
push eax
push ecx
mov dword [esp + 0x34], edx
call fcn.00415e66
fmul qword [0x4182a8]
mov eax, dword [esp + 0x48]
add esp, 0x10
add esi, 0x10
fadd qword [edi]
add edi, 8
dec eax
mov dword [esp + 0x38], eax
fstp qword [edi - 8]
jne 0x404880
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x40]
fld qword [esp + 0xac]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
fadd qword [0x418158]
mov eax, 0x800
add ecx, 0x100
sub edx, eax
sub ebx, eax
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0xc]
fstp qword [esp + 0xac]
sub edi, eax
add esi, eax
add edx, eax
mov eax, dword [esp + 0x1c]
dec eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], esi
mov dword [esp + 0xc], edx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x1c], eax
jne 0x40471d
mov edi, dword [0x41c980]
mov ecx, dword [esp + 0x10]
test edi, edi
je 0x404976
mov ebx, dword [0x419030]
mov eax, ecx
cdq
idiv ebx
mov esi, eax
mov eax, ecx
cdq
idiv ebx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fidiv dword [0x419030]
fld qword [0x418158]
fsub st(1)
fmul qword [edi + esi*8]
fxch st(1)
fmul qword [edi + esi*8 + 8]
faddp st(1)
fstp qword [0x41c988]
jmp 0x40498a
mov dword [0x41c988], 0
mov dword [0x41c98c], 0x3ff00000
mov edi, dword [0x41c998]
test edi, edi
je 0x4049ca
mov ebx, dword [0x41903c]
mov eax, ecx
cdq
idiv ebx
mov esi, eax
mov eax, ecx
cdq
idiv ebx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fidiv dword [0x419030]
fld qword [0x418158]
fsub st(1)
fmul qword [edi + esi*8]
fxch st(1)
fmul qword [edi + esi*8 + 8]
faddp st(1)
fstp qword [ebp + 0x34]
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
push edx
push eax
call fcn.0040afa0
add esp, 8
call fcn.0040b0c0
fld qword [0x418158]
fdiv qword [esp + 0x74]
mov ebx, eax
mov esi, ebx
mov dword [esp + 0xa0], ebx
neg esi
cmp esi, ebx
mov dword [esp + 0x38], esi
mov dword [esp + 0xc], esi
fstp qword [esp + 0x14]
jg 0x404a3e
mov ecx, dword [esp + 0x94]
lea edi, [ecx + esi*8]
fild dword [esp + 0xc]
sub esp, 8
fmul qword [esp + 0xfc]
fstp qword [esp]
call fcn.00401060
fmul qword [esp + 0x1c]
add esp, 8
inc esi
add edi, 8
cmp esi, ebx
mov dword [esp + 0xc], esi
fstp qword [edi - 8]
jle 0x404a12
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x54]
push edx
push eax
call fcn.0040afa0
add esp, 8
call fcn.0040b0c0
fld qword [0x418158]
fdiv qword [esp + 0x54]
mov ebx, eax
mov esi, ebx
mov dword [esp + 0x20], ebx
neg esi
cmp esi, ebx
mov dword [esp + 0x74], esi
mov dword [esp + 0xc], esi
fstp qword [esp + 0x14]
jg 0x404aaf
mov ecx, dword [esp + 0x90]
lea edi, [ecx + esi*8]
fild dword [esp + 0xc]
sub esp, 8
fmul qword [esp + 0xdc]
fstp qword [esp]
call fcn.00401060
fmul qword [esp + 0x1c]
add esp, 8
inc esi
add edi, 8
cmp esi, ebx
mov dword [esp + 0xc], esi
fstp qword [edi - 8]
jle 0x404a83
xor eax, eax
lea edx, [esp + 0x88fc]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
mov dword [esp + 0xc], 0x400
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0xa0]
cmp eax, ecx
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
jg 0x404c43
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0xa0]
lea edi, [ecx + eax]
lea ecx, [edx + eax*8]
mov esi, edi
sub ebx, eax
neg esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x44], edi
inc ebx
mov eax, edi
mov ecx, esi
test edi, edi
mov dword [esp + 0x24], eax
jge 0x404b2c
mov ecx, dword [esp + 0x44]
mov eax, esi
mov dword [esp + 0x24], eax
cmp eax, 0x400
jge 0x404c26
cmp eax, 0x200
jge 0x404b63
fild dword [esp + 0x24]
fmul qword [esp + 0xec]
fmul qword [ebp + 0x34]
fst qword [esp + 0x14]
fcomp qword [0x4181c0]
fnstsw ax
test ah, 0x41
je 0x404c26
jmp 0x404b96
add ecx, 0x400
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fmul qword [esp + 0xec]
fmul qword [ebp + 0x34]
fsubr qword [0x4181e8]
fst qword [esp + 0x14]
fcomp qword [0x4181c0]
fnstsw ax
test ah, 1
jne 0x404c26
fld qword [esp + 0x14]
fcomp qword [0x4182a0]
fnstsw ax
test ah, 0x40
jne 0x404c26
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.0040afa0
add esp, 8
call fcn.0040b0c0
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
test eax, eax
fsubr qword [esp + 0x14]
fstp qword [esp + 0x14]
jl 0x404c26
cmp eax, 0x200
jg 0x404c26
fld qword [0x418158]
fsub qword [esp + 0x14]
fmul qword [esp + eax*8 + 0xd8fc]
fld qword [esp + 0x14]
fmul qword [esp + eax*8 + 0xd904]
mov eax, dword [esp + 0x64]
cmp eax, 1
faddp st(1)
fdiv qword [esp + 0xbc]
jne 0x404c0d
fld st(0)
fmulp st(1)
jmp 0x404c18
cmp eax, 2
jne 0x404c18
fldln2
fxch st(1)
fyl2x
mov ecx, dword [esp + 0x3c]
fmul qword [ecx]
fadd qword [esp + 0x2c]
fstp qword [esp + 0x2c]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
inc edi
dec esi
inc edx
add ecx, 8
dec ebx
mov dword [esp + 0x44], edx
mov dword [esp + 0x3c], ecx
jne 0x404b16
fld qword [0x418290]
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x20]
fst qword [esp + 0x24]
cmp edx, eax
jg 0x404cd8
mov eax, dword [esp + 0x1c]
mov esi, edx
mov edx, dword [esp + 0x90]
lea ecx, [eax + esi]
lea ebx, [edx + esi*8]
mov edx, dword [esp + 0x20]
mov eax, ecx
sub edx, esi
neg eax
shl eax, 3
lea edi, [ecx*8]
inc edx
test ecx, ecx
mov esi, edi
jge 0x404c8b
mov esi, eax
jmp 0x404c99
cmp ecx, 0x200
jle 0x404c99
lea esi, [eax + 0x2000]
fld qword [esp + esi + 0xf904]
mov esi, dword [esp + 0x68]
fdiv qword [esp + 0xac]
cmp esi, 1
jne 0x404cb6
fld st(0)
fmulp st(1)
jmp 0x404cc3
cmp dword [esp + 0x68], 2
jne 0x404cc3
fldln2
fxch st(1)
fyl2x
fmul qword [ebx]
inc ecx
sub eax, 8
add edi, 8
add ebx, 8
dec edx
faddp st(1)
jne 0x404c81
fst qword [esp + 0x24]
mov eax, dword [esp + 0x40]
cdq
and edx, 0x3ff
add eax, edx
sar eax, 0xa
fld qword [eax*8 + 0x41f6e0]
mov eax, dword [0x41c980]
fstp qword [esp + 0x14]
test eax, eax
je 0x404d15
fstp st(0)
fld qword [esp + 0x14]
fld qword [0x41c988]
call fcn.0040b720
fstp qword [esp + 0x14]
fld qword [esp + 0x24]
mov eax, dword [esp + 0x64]
cmp eax, 1
jne 0x404d26
fld qword [esp + 0x2c]
fsqrt
jmp 0x404d43
cmp eax, 2
jne 0x404d47
fldl2e
fmul qword [esp + 0x2c]
fld st(0)
frndint
fxch st(1)
fsub st(1)
f2xm1
fld1
faddp st(1)
fscale
fstp st(1)
fstp qword [esp + 0x2c]
mov eax, dword [esp + 0x68]
fld qword [esp + 0x14]
fmul qword [esp + 0x2c]
cmp eax, 1
jne 0x404d60
fxch st(1)
fsqrt
fxch st(1)
jmp 0x404d7f
cmp eax, 2
jne 0x404d7f
fld st(1)
fldl2e
fmulp st(1)
fld st(0)
frndint
fxch st(1)
fsub st(1)
f2xm1
fld1
faddp st(1)
fscale
fstp st(1)
fstp st(2)
fld st(1)
fcomp qword [0x418290]
fnstsw ax
test ah, 0x40
jne 0x404e36
fdivrp st(1)
mov ecx, dword [esp + 0x48]
fld st(0)
fstp qword [ecx]
fild dword [esp + 0x1c]
fst qword [esp + 0x14]
fcomp qword [esp + 0x54]
fnstsw ax
test ah, 1
jne 0x404dc4
fld qword [0x4181e8]
fsub qword [esp + 0x54]
fcomp qword [esp + 0x14]
fnstsw ax
test ah, 1
je 0x404de4
cmp dword [esp + 0xc], 0x200
jle 0x404dd4
fld qword [esp + 0x14]
jmp 0x404dd8
fild dword [esp + 0xc]
fdiv qword [esp + 0x54]
fxch st(1)
fmul st(1)
fmul st(1)
fstp qword [ecx]
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 0x30]
cmp edx, eax
fstp st(0)
jle 0x404dfc
mov esi, 0x400
sub esi, eax
cmp edx, esi
jl 0x404e18
fld qword [ecx]
fcomp qword [0x418158]
fnstsw ax
test ah, 0x41
jne 0x404e18
mov dword [ecx], 0
mov dword [ecx + 4], 0x3ff00000
fld qword [ecx]
fcomp qword [0x418290]
fnstsw ax
test ah, 1
je 0x404e4b
mov dword [ecx], 0
mov dword [ecx + 4], 0
jmp 0x404e4b
mov ecx, dword [esp + 0x48]
fstp st(0)
mov dword [ecx], 0
mov dword [ecx + 4], 0x3ff00000
fstp st(0)
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
inc ebx
add edi, 0x200
dec eax
add ecx, 8
mov dword [esp + 0x1c], ebx
test eax, eax
mov dword [esp + 0x40], edi
mov dword [esp + 0xc], eax
mov dword [esp + 0x48], ecx
jg 0x404acc
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x70]
cmp eax, ecx
je 0x405176
mov ecx, dword [esp + 0x10]
lea edx, [ecx - 0x200]
test edx, edx
jge 0x404edf
mov ecx, edx
xor eax, eax
neg ecx
shl ecx, 3
mov esi, ecx
lea edi, [esp + 0xfc]
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, esi
mov esi, dword [ebp + 8]
and ecx, 3
rep stosb byte es:[edi], al
lea ecx, [edx*8 + 0x2000]
lea edi, [esp + 0xfc]
shl edx, 3
mov eax, ecx
sub edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x404ef3
mov eax, dword [ebp + 8]
mov ecx, 0x800
lea edi, [esp + 0xfc]
lea esi, [eax + edx*8]
rep movsd dword es:[edi], dword [esi]
xor eax, eax
fld qword [esp + eax + 0x68fc]
fmul qword [esp + eax + 0xfc]
add eax, 8
cmp eax, 0x2000
fstp qword [esp + eax + 0xf4]
jl 0x404ef5
lea ecx, [esp + 0x11904]
lea edx, [esp + 0x20fc]
push ecx
lea eax, [esp + 0x100]
push edx
push eax
push 1
push 0x400
call fcn.00405ed0
mov ecx, dword [esp + 0x80]
add esp, 0x14
fld qword [0x418158]
fsub qword [esp + ecx*8 + 0x28fc]
lea eax, [esp + ecx*8 + 0x28fc]
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
xor esi, esi
fstp qword [esp + 0xd4]
mov dword [esp + 0x6c], eax
fld qword [esp + 0xd4]
fmul qword [esp + esi*8 + 0xa8fc]
fld qword [esp + esi*8 + 0x88fc]
fmul qword [eax]
test esi, esi
faddp st(1)
fstp qword [esp + 0x14]
jne 0x404fd0
fld qword [esp + 0xfc]
fabs
fld qword [esp + 0x14]
fmul qword [esp + 0xfc]
fstp qword [esp + 0xfc]
jmp 0x405059
cmp esi, 0x200
jne 0x404ff5
fld qword [esp + 0x104]
fabs
fld qword [esp + 0x14]
fmul qword [esp + 0x104]
fstp qword [esp + 0x104]
jmp 0x405059
mov eax, esi
shl eax, 4
mov ecx, dword [esp + eax + 0x100]
mov edx, dword [esp + eax + 0xfc]
lea edi, [esp + eax + 0xfc]
lea ebx, [esp + eax + 0x104]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], edx
mov eax, dword [ebx + 4]
mov edx, dword [ebx]
mov ecx, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x30]
push edx
push eax
push ecx
mov dword [esp + 0x34], edx
call fcn.00415e66
fld qword [esp + 0x24]
fmul qword [esp + 0x3c]
mov eax, dword [esp + 0x7c]
add esp, 0x10
fstp qword [edi]
fld qword [esp + 0x14]
fmul qword [esp + 0x24]
fstp qword [ebx]
fld qword [esp + 0xb4]
fadd st(1)
inc esi
cmp esi, 0x200
fstp qword [esp + 0xb4]
fld qword [esp + 0x14]
fmul st(1)
fadd qword [esp + 0xa4]
fstp qword [esp + 0xa4]
fstp st(0)
jle 0x404f8f
lea edx, [esp + 0x11904]
lea eax, [esp + 0x20fc]
push edx
lea ecx, [esp + 0x100]
push eax
push ecx
push 0xffffffffffffffff
push 0x400
call fcn.00405ed0
fld qword [esp + 0xb8]
fcomp qword [0x418290]
add esp, 0x14
fnstsw ax
test ah, 0x40
je 0x4050cf
fld qword [0x418158]
jmp 0x4050dd
fld qword [esp + 0xb4]
fdiv qword [esp + 0xa4]
fmul qword [0x4181e0]
xor eax, eax
fld qword [esp + eax + 0x68fc]
fmul qword [esp + eax + 0xfc]
add eax, 8
cmp eax, 0x2000
fmul st(1)
fstp qword [esp + eax + 0xf4]
jl 0x4050e5
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x9c]
mov ebx, dword [ebp + 0x10]
mov esi, 0x200
lea ecx, [eax - 0x200]
lea edi, [esp + 0xfc]
fstp st(0)
lea edx, [edx + ecx*8]
sub esi, eax
test ecx, ecx
jl 0x405158
cmp ecx, ebx
jge 0x405158
fld qword [edx]
fadd qword [edi]
fst qword [edx]
fabs
fld qword [esp + 0xc4]
fcomp st(1)
fnstsw ax
test ah, 1
je 0x405156
fstp qword [esp + 0xc4]
jmp 0x405158
fstp st(0)
inc ecx
add edx, 8
add edi, 8
lea eax, [esi + ecx]
cmp eax, 0x400
jl 0x40512d
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x70], ecx
jmp 0x405179
mov ebx, dword [ebp + 0x10]
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x60]
cmp ecx, eax
je 0x40518c
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0x10]
lea eax, [ebx + 0x200]
inc ecx
cmp ecx, eax
mov dword [esp + 0x10], ecx
jl 0x404280
mov ebx, dword [esp + 0x88]
mov eax, dword [esp + 0x9c]
mov edi, dword [ebp + 8]
mov ecx, ebx
mov esi, eax
mov edx, ecx
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0040b422
fld qword [esp + 0xc8]
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret