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

Disassembly:
mov ecx, dword [esp + 4]
sub esp, 0x4c
cmp cx, 0xffff
push ebp
mov ebp, dword [esp + 0x5c]
push esi
jne 0x470088
or eax, 0xffffffff
jmp 0x470095
mov edx, dword [0x86b838]
movsx eax, cx
mov eax, dword [edx + eax*4 + 4]
xor edx, edx
cmp eax, 0xffffffff
mov esi, ebp
mov dword [esi], edx
mov dword [esi + 4], edx
mov dword [esi + 8], edx
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], edx
mov dword [esi + 0x14], edx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], edx
je 0x470a86
mov esi, dword [0x6aac04]
movsx ecx, cx
mov edx, ecx
shl edx, 6
and eax, 0xffff
push ebx
lea ebx, [edx + esi + 0x10]
mov edx, dword [0x86b840]
mov esi, dword [edx + 0x34]
shl eax, 9
add eax, esi
cmp word [0x70b460], 0
push edi
mov edi, eax
mov eax, dword [0x738ba0]
mov edx, dword [eax + 0x114]
movsx eax, word [edi + 2]
mov dword [esp + 0x30], edx
lea edx, [eax + eax*4]
lea edx, [edx*8 + 0x704338]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], edi
mov dword [esp + 0x14], edx
je 0x470130
mov eax, dword [edx + 0x14]
push eax
call fcn.00470030
fstp dword [edx + 0x14]
mov eax, dword [edx + 0x18]
push eax
call fcn.00470030
fstp dword [edx + 0x18]
add esp, 8
mov eax, dword [edi + 0x34]
cmp eax, 0xffffffff
mov dword [esp + 0x1c], 0
mov dword [esp + 0x24], 0
je 0x470229
fld dword [ecx*4 + 0x6eb414]
mov edx, dword [0x851c30]
fmul dword [0x66c580]
mov edx, dword [edx + 0x34]
and eax, 0xffff
lea eax, [eax + eax*2]
mov esi, dword [edx + eax*4 + 8]
mov eax, dword [esi + 0x11c]
cmp eax, 0xffffffff
fmul dword [0x66c418]
fstp dword [esp + 0x1c]
fld dword [ecx*4 + 0x6eb418]
fmul dword [0x66c580]
fmul dword [0x66c418]
fstp dword [esp + 0x24]
je 0x470229
mov si, word [esi + 0x2f0]
cmp si, 0xffff
je 0x470229
and eax, 0xffff
lea ecx, [eax + eax*2]
mov edx, dword [edx + ecx*4 + 8]
mov eax, dword [edx]
mov ecx, dword [0x86cff4]
and eax, 0xffff
shl eax, 5
mov edx, dword [eax + ecx + 0x14]
mov eax, dword [edx + 0x2e8]
movsx ecx, si
imul ecx, ecx, 0x11c
fld dword [ecx + eax + 0x7c]
fcomp dword [0x66c40c]
add ecx, eax
fnstsw ax
test ah, 0x41
jne 0x470200
fld dword [ecx + 0x7c]
fmul dword [0x66c580]
fmul dword [0x66c418]
fstp dword [esp + 0x1c]
fld dword [ecx + 0x80]
fcomp dword [0x66c40c]
fnstsw ax
test ah, 0x41
jne 0x470229
fld dword [ecx + 0x80]
fmul dword [0x66c580]
fmul dword [0x66c418]
fstp dword [esp + 0x24]
mov esi, dword [esp + 0x14]
mov eax, dword [esi + 0x14]
mov dword [ebp], eax
mov ecx, dword [esi + 0x18]
mov dword [ebp + 4], ecx
fld dword [esi + 0x20]
fabs
fstp dword [esp + 0x18]
fld dword [esi + 0x1c]
fabs
fstp dword [esp + 0x10]
fld dword [0x66c410]
fld dword [esp + 0x18]
fcomp dword [0x66c4f4]
fnstsw ax
test ah, 0x41
jne 0x4702ba
fld dword [esp + 0x10]
fcomp dword [0x66c4f4]
fnstsw ax
test ah, 0x41
jne 0x4702ba
fstp st(0)
fld dword [esp + 0x18]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 0x41
jne 0x470298
fld dword [esp + 0x10]
fdiv dword [esp + 0x18]
fstp dword [esp + 0x10]
fld dword [0x66c410]
jmp 0x4702a8
fld dword [esp + 0x18]
fdiv dword [esp + 0x10]
mov dword [esp + 0x10], 0x3f800000
fld dword [esp + 0x10]
fmul dword [esp + 0x10]
fld st(1)
fmul st(2)
faddp st(1)
fsqrt
fstp st(1)
fld st(0)
fmul dword [esi + 0x1c]
fcom dword [0x66c4f0]
fnstsw ax
test ah, 5
jp 0x4702d8
fstp st(0)
mov dword [esp + 0x18], 0xbf800000
jmp 0x4702f5
fcom dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x4702f1
fstp st(0)
mov dword [esp + 0x18], 0x3f800000
jmp 0x4702f5
fstp dword [esp + 0x18]
fmul dword [esi + 0x20]
fcom dword [0x66c4f0]
fnstsw ax
test ah, 5
jp 0x470311
fstp st(0)
mov dword [esp + 0x10], 0xbf800000
jmp 0x47032e
fcom dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x47032a
fstp st(0)
mov dword [esp + 0x10], 0x3f800000
jmp 0x47032e
fstp dword [esp + 0x10]
mov edx, dword [0x6aac04]
test byte [edx + 0xc], 1
jne 0x4707c4
mov eax, dword [0x6eb40c]
mov cl, byte [eax + 2]
test cl, cl
jne 0x4707c4
mov al, byte [esi + 0x24]
test al, al
je 0x4706c3
mov dl, byte [esi + 0xb]
test dl, dl
mov bl, byte [0x6eb41f]
je 0x470379
test bl, bl
je 0x470379
mov cl, byte [0x6eb420]
xor eax, eax
test cl, cl
sete al
jmp 0x470382
mov cl, byte [0x6eb420]
movzx eax, cl
inc eax
test dl, dl
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
fstp dword [esp + 0x40]
je 0x4703a0
test bl, bl
je 0x4703a0
xor ebx, ebx
test cl, cl
sete bl
jmp 0x4703a3
movzx ebx, cl
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
mov edi, dword [eax + 0x78]
xor esi, esi
mov si, word [eax + 0x74]
push ecx
push esi
call fcn.0046ff70
mov edx, dword [esp + 0x18]
inc ebx
mov dword [esp + 0x40], ebx
fild dword [esp + 0x40]
push edx
push esi
fmulp st(1)
fmul dword [esp + 0x2c]
fstp dword [esp + 0x48]
call fcn.0046ff70
fmul dword [esp + 0x50]
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x34]
mov esi, dword [esp + 0x3c]
fmul dword [esp + 0x34]
add esp, 0x10
cmp eax, 0xffffffff
fstp dword [esp + 0x3c]
je 0x470425
xor ecx, ecx
mov cx, word [esi + 0x24]
cmp cx, 0xffff
je 0x470425
push ecx
call fcn.00561470
fdivr dword [0x66c410]
add esp, 4
fld dword [esp + 0x38]
fmul st(1)
fstp dword [esp + 0x38]
fmul dword [esp + 0x3c]
fstp dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 0x34]
cmp eax, 0xffffffff
je 0x470474
and eax, 0xffff
lea edx, [eax + eax*2]
mov eax, dword [0x851c30]
mov ecx, dword [eax + 0x34]
mov edx, dword [ecx + edx*4 + 8]
mov eax, dword [0x738ba0]
fld dword [edx + 0x424]
mov ecx, dword [eax + 0x174]
fmul dword [ecx + 0x84]
fsubr dword [0x66c410]
fld dword [esp + 0x38]
fmul st(1)
fstp dword [esp + 0x38]
fmul dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld dword [esp + 0x18]
mov ebx, dword [esp + 0x30]
fabs
fst qword [esp + 0x24]
fld dword [ebx + 0x48]
fxch st(1)
fcompp
fnstsw ax
test ah, 1
jne 0x4704e9
fld dword [esi + 0x34]
fdiv dword [ebx + 0x40]
fcom dword [0x66c40c]
fnstsw ax
test ah, 5
jp 0x4704ad
fstp st(0)
fld dword [0x66c40c]
jmp 0x4704c2
fcom dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x4704c2
fstp st(0)
fld dword [0x66c410]
fld dword [ebx + 0x44]
fsub dword [0x66c410]
fmul st(1)
fadd dword [0x66c410]
fmul dword [esp + 0x38]
fstp dword [esp + 0x38]
fstp st(0)
fld dword [esp + 0x64]
fadd dword [esi + 0x34]
fstp dword [esi + 0x34]
jmp 0x4704f0
mov dword [esi + 0x34], 0
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x68]
lea edi, [esi + 0x30]
lea ecx, [esi + 0x2c]
push edi
push ecx
call fcn.00459780
mov dword [esi + 0x28], eax
mov al, byte [0x6eb41d]
add esp, 0x10
test al, al
je 0x4706a0
fld dword [edi]
fcomp dword [0x66c40c]
fnstsw ax
test ah, 0x41
jne 0x4706a0
fld qword [esp + 0x24]
fcomp qword [0x66c520]
fnstsw ax
test ah, 0x41
je 0x47057d
fld dword [esp + 0x10]
fabs
fcomp qword [0x66c520]
fnstsw ax
test ah, 0x41
je 0x47057d
fld dword [ebp]
fabs
fcomp qword [0x66c520]
fnstsw ax
test ah, 0x41
je 0x47057d
fld dword [ebp + 4]
fabs
fcomp qword [0x66c520]
fnstsw ax
test ah, 0x41
jne 0x4706a0
call fcn.0046fca0
fld dword [ebx]
fcomp dword [0x66c40c]
fnstsw ax
test ah, 5
jp 0x470599
fld dword [0x66c40c]
jmp 0x4705b2
fld dword [ebx]
fcomp dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x4705b0
fld dword [0x66c410]
jmp 0x4705b2
fld dword [ebx]
fmul dword [edi]
fsubr dword [0x66c410]
fstp dword [esp + 0x24]
fld dword [ebx + 4]
fcomp dword [0x66c40c]
fnstsw ax
test ah, 5
jp 0x4705d6
fld dword [0x66c40c]
jmp 0x4705f1
fld dword [ebx + 4]
fcomp dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x4705ee
fld dword [0x66c410]
jmp 0x4705f1
fld dword [ebx + 4]
mov edx, dword [0x6aa328]
fmul dword [edi]
mov al, byte [edx + 2]
test al, al
fstp dword [esp + 0x60]
je 0x47060a
fmul dword [0x66c408]
fld dword [esp + 0x40]
fmul st(1)
fstp dword [esp + 0x40]
fmul dword [esp + 0x44]
fld dword [esp + 0x40]
fcomp dword [0x66ca88]
fnstsw ax
test ah, 5
jp 0x470633
mov dword [esp + 0x40], 0xbdd67750
jmp 0x47064c
fld dword [esp + 0x40]
fcomp dword [0x66ca84]
fnstsw ax
test ah, 0x41
jne 0x47064c
mov dword [esp + 0x40], 0x3dd67750
fcom dword [0x66ca80]
fnstsw ax
test ah, 5
jp 0x470663
fstp st(0)
fld dword [0x66ca80]
jmp 0x470678
fcom dword [0x6506e0]
fnstsw ax
test ah, 0x41
jne 0x470678
fstp st(0)
fld dword [0x6506e0]
fld dword [esp + 0x40]
fmul dword [esp + 0x60]
fld dword [esp + 0x24]
fmul dword [esp + 0x38]
faddp st(1)
fstp dword [esp + 0x38]
fmul dword [esp + 0x60]
fld dword [esp + 0x24]
fmul dword [esp + 0x3c]
faddp st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x64]
mov ebx, dword [esp + 0x2c]
fmul dword [0x66c414]
fld dword [esp + 0x38]
fmul st(1)
fstp dword [ebp + 0xc]
fmul dword [esp + 0x3c]
fstp dword [ebp + 0x10]
jmp 0x4707cc
mov eax, dword [esi + 0x14]
fld dword [0x66c410]
mov dword [ebp], eax
mov ecx, dword [esi + 0x18]
mov dword [ebp + 4], ecx
mov eax, dword [edi + 0x34]
cmp eax, 0xffffffff
je 0x4706fa
xor ecx, ecx
mov cx, word [ebx + 0x24]
cmp cx, 0xffff
je 0x4706fa
push ecx
fstp st(0)
call fcn.00561470
fdivr dword [0x66c410]
add esp, 4
mov eax, dword [edi + 0x34]
cmp eax, 0xffffffff
je 0x470735
and eax, 0xffff
lea edx, [eax + eax*2]
mov eax, dword [0x851c30]
mov ecx, dword [eax + 0x34]
mov edx, dword [ecx + edx*4 + 8]
mov eax, dword [0x738ba0]
fld dword [edx + 0x424]
mov ecx, dword [eax + 0x174]
fmul dword [ecx + 0x84]
fsubr dword [0x66c410]
fmulp st(1)
fld st(0)
fmul dword [esi + 0x1c]
fstp dword [ebp + 0xc]
fmul dword [esi + 0x20]
fstp dword [ebp + 0x10]
fld dword [ebp + 0xc]
fcomp dword [0x66ca7c]
fnstsw ax
test ah, 5
jp 0x47075b
fld dword [0x66ca7c]
jmp 0x470776
fld dword [ebp + 0xc]
fcomp dword [0x66ca78]
fnstsw ax
test ah, 0x41
jne 0x470773
fld dword [0x66ca78]
jmp 0x470776
fld dword [ebp + 0xc]
fstp dword [ebp + 0xc]
fld dword [ebp + 0x10]
fcomp dword [0x66ca74]
fnstsw ax
test ah, 5
jp 0x470791
fld dword [0x66ca74]
jmp 0x4707ac
fld dword [ebp + 0x10]
fcomp dword [0x66ca70]
fnstsw ax
test ah, 0x41
jne 0x4707a9
fld dword [0x66ca70]
jmp 0x4707ac
fld dword [ebp + 0x10]
mov esi, dword [esp + 0x60]
fstp dword [ebp + 0x10]
lea edx, [ebx + 0x2c]
push edx
call fcn.00459980
add esp, 4
mov dword [ebx + 0x28], eax
jmp 0x4707cc
xor eax, eax
mov dword [ebp + 0xc], eax
mov dword [ebp + 0x10], eax
xor eax, eax
mov dword [esp + 0x49], eax
mov dword [esp + 0x4d], eax
mov dword [esp + 0x51], eax
mov dword [esp + 0x55], eax
mov word [esp + 0x59], ax
mov ax, word [ebx + 8]
and ax, word [ebx + 0xa]
mov byte [esp + 0x48], 0
test ax, ax
je 0x470828
mov esi, dword [esp + 0x14]
xor ecx, ecx
movzx edx, ax
mov edi, edi
mov eax, 1
shl eax, cl
test edx, eax
je 0x470822
cmp byte [ecx + esi], 0
jne 0x470822
mov eax, 1
shl eax, cl
not eax
and word [ebx + 8], ax
and word [ebx + 0xa], ax
inc ecx
cmp ecx, 0x13
jl 0x470800
mov esi, dword [esp + 0x14]
movzx edi, word [ebx + 8]
lea edx, [esp + 0x48]
xor ecx, ecx
sub esi, edx
jmp 0x470840
mov eax, 1
shl eax, cl
test edi, eax
jne 0x470854
lea eax, [esp + ecx + 0x48]
mov dl, byte [esi + eax]
mov byte [eax], dl
inc ecx
cmp ecx, 0x13
jl 0x470840
mov al, byte [esp + 0x52]
test al, al
mov eax, dword [ebp + 0x18]
mov edi, 0xfffffffe
je 0x47086f
or eax, 1
jmp 0x470871
and eax, edi
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x48]
test al, al
mov eax, dword [ebp + 0x18]
mov edx, 0xfffffffd
mov esi, 2
je 0x47088d
or eax, esi
jmp 0x47088f
and eax, edx
mov cl, byte [esp + 0x4a]
test cl, cl
mov dword [ebp + 0x18], eax
je 0x47089f
or eax, 0x40
jmp 0x4708a2
and eax, 0xffffffbf
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x4d]
test al, al
mov eax, dword [ebp + 0x18]
je 0x4708b5
or eax, 0x10
jmp 0x4708b8
and eax, 0xffffffef
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x55]
test al, al
mov eax, dword [ebp + 0x18]
je 0x4708cd
or eax, 0x400
jmp 0x4708d2
and eax, 0xfffffbff
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x4f]
test al, al
mov eax, dword [ebp + 0x18]
je 0x4708e7
or eax, 0x800
jmp 0x4708ec
and eax, 0xfffff7ff
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x4e]
test al, al
mov eax, dword [ebp + 0x18]
je 0x470909
or eax, 0x1000
mov dword [ebp + 0x18], eax
or eax, 0x2000
jmp 0x470916
and eax, 0xffffefff
mov dword [ebp + 0x18], eax
and eax, 0xffffdfff
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x56]
test al, al
jne 0x470938
movzx eax, cl
mov ecx, dword [esp + 0x30]
cmp ax, word [ecx + 0x6c]
jge 0x470938
mov eax, dword [ebp + 0x18]
and eax, 0xffffbfff
jmp 0x470940
mov eax, dword [ebp + 0x18]
or eax, 0x4000
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x4c]
test al, al
mov eax, dword [ebp + 0x18]
je 0x470955
or eax, 0x80
jmp 0x47095a
and eax, 0xffffff7f
mov dword [ebp + 0x18], eax
mov al, byte [esp + 0x53]
test al, al
mov eax, dword [ebp + 0x1c]
mov ecx, 4
je 0x470971
or eax, ecx
jmp 0x470974
and eax, 0xfffffffb
mov dword [ebp + 0x1c], eax
mov al, byte [esp + 0x4b]
test al, al
mov eax, dword [ebp + 0x1c]
je 0x470987
or eax, 1
jmp 0x470989
and eax, edi
mov dword [ebp + 0x1c], eax
mov al, byte [esp + 0x49]
test al, al
mov eax, dword [ebp + 0x1c]
je 0x47099b
or eax, esi
jmp 0x47099d
and eax, edx
mov esi, dword [ebp + 0x18]
mov dword [ebp + 0x1c], eax
mov eax, esi
and eax, 0x800
je 0x4709b4
fld dword [0x66c410]
jmp 0x4709ba
fld dword [0x66c40c]
fstp dword [ebp + 8]
test byte [ebx + 9], 2
jne 0x4709cd
mov edx, dword [esp + 0x14]
mov dl, byte [edx + 9]
mov byte [ebp + 0x15], dl
test byte [ebx + 8], cl
pop edi
pop ebx
jne 0x4709de
mov ecx, dword [esp + 0xc]
mov dl, byte [ecx + 2]
mov byte [ebp + 0x14], dl
cmp word [0x70b460], 1
jne 0x470a42
test eax, eax
je 0x470a42
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x34]
cmp eax, 0xffffffff
je 0x470a42
mov ecx, dword [0x851c30]
mov ecx, dword [ecx + 0x34]
and eax, 0xffff
lea edx, [eax + eax*2]
mov eax, dword [ecx + edx*4 + 8]
mov dx, word [eax + 0x2f2]
cmp dx, 0xffff
je 0x470a42
movsx edx, dx
mov eax, dword [eax + edx*4 + 0x2f8]
and eax, 0xffff
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*4 + 8]
test byte [ecx + 0x22c], 1
je 0x470a42
and esi, 0xfffff7ff
mov dword [ebp + 0x18], esi
fld dword [ebp + 4]
fld dword [ebp]
fld st(1)
fmulp st(2)
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
fcom dword [0x66c410]
fnstsw ax
test ah, 0x41
jne 0x470a84
fsqrt
mov edx, ebp
fdivr dword [0x66c410]
fld st(0)
fmul dword [ebp]
fstp dword [ebp]
fmul dword [ebp + 4]
fstp dword [ebp + 4]
call fcn.004716c0
pop esi
pop ebp
add esp, 0x4c
ret
fstp st(0)
mov edx, ebp
call fcn.004716c0
pop esi
pop ebp
add esp, 0x4c
ret