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

Disassembly:
sub esp, 0x74
push ebx
push ebp
mov ebp, dword [esp + 0x80]
push esi
mov esi, ecx
mov eax, dword [esi + 0x200]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x210]
xor ebx, ebx
cmp eax, 2
push edi
jne 0x4994ac
mov ecx, dword [ebp]
mov edx, dword [ebp + 8]
lea eax, [esp + 0x54]
mov dword [esp + 0x34], ecx
lea edi, [esi + 0x3a0]
push eax
mov ecx, edi
mov dword [esp + 0x3c], edx
call fcn.004bb720
cmp eax, 1
jne 0x4994ac
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x2c], ecx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x38]
push ecx
mov ecx, dword [0x6800fc]
mov dword [esp + 0x38], edx
call fcn.004bbc50
test eax, eax
je 0x4994ac
push ebx
mov ecx, edi
call fcn.004bb460
test eax, eax
jne 0x4994ac
mov ecx, edi
call fcn.004bb8c0
mov edx, dword [eax]
mov dword [esp + 0x54], edx
mov ecx, dword [eax + 4]
mov dword [esp + 0x58], ecx
mov edx, dword [eax + 8]
lea eax, [esp + 0x54]
push eax
mov ecx, esi
mov dword [esp + 0x60], edx
call fcn.00496510
fld dword [ebp]
fsub dword [esi + 0x204]
fstp dword [esp + 0x6c]
mov ecx, dword [esp + 0x6c]
fld dword [ebp + 4]
mov dword [esp + 0x48], ecx
fsub dword [esi + 0x208]
mov ecx, dword [esi + 0x440]
cmp ecx, 0xa
fstp dword [esp + 0x70]
fld dword [ebp + 8]
mov edx, dword [esp + 0x70]
fsub dword [esi + 0x20c]
mov dword [esp + 0x4c], edx
fstp dword [esp + 0x74]
mov eax, dword [esp + 0x74]
mov dword [esp + 0x50], eax
jne 0x4994fe
mov dword [esp + 0x4c], 0
fld dword [esp + 0x48]
mov dword [esp + 0x1c], ebx
fmul dword [esp + 0x48]
mov edx, 1
fld dword [esp + 0x50]
fmul dword [esp + 0x50]
faddp st(1)
fld dword [esp + 0x4c]
fmul dword [esp + 0x4c]
faddp st(1)
fsqrt
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fcomp dword [esi + 0x658]
fnstsw ax
test ah, 0x41
jne 0x49953e
mov dword [esp + 0x1c], edx
fld dword [esi + 0x658]
mov dword [esp + 0x18], ebx
fsub dword [esp + 0x14]
fstp dword [esp + 0x10]
mov eax, dword [esp + 0x10]
and eax, 0x7fffffff
mov dword [esp + 0x10], eax
fld dword [esp + 0x10]
fcomp dword [0x60477c]
fnstsw ax
test ah, 0x41
jne 0x499583
fld dword [esp + 0x10]
fcomp qword [0x5e8ba8]
fnstsw ax
test ah, 5
jp 0x499583
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x14]
mov dword [esi + 0x658], eax
mov eax, dword [0x68008c]
test byte [eax + 0x1b8c], 1
mov dword [esp + 0x10], 0x42c80000
jne 0x4995ab
mov dword [esp + 0x10], 0x43160000
cmp dword [esi + 0x348], 3
je 0x4995c2
fld dword [esp + 0x10]
fmul dword [0x5da2f8]
fstp dword [esp + 0x10]
mov edi, dword [esi + 4]
xor eax, eax
cmp edi, edx
jne 0x4995d5
cmp dword [esi + 0xf48], ebx
je 0x4995d5
mov eax, edx
xor ebx, ebx
cmp eax, 1
jne 0x49965a
fld dword [esp + 0x14]
mov dword [esp + 0x10], 0x43480000
fcomp dword [0x5da2e0]
fnstsw ax
test ah, 5
jp 0x499687
cmp dword [esi + 0x444], 2
jne 0x4996b9
lea ecx, [esi + 0x3a0]
call fcn.004bb420
cmp ax, 3
jae 0x499687
fld dword [esi + 0x3b0]
fsub dword [ebp]
fld dword [esi + 0x3b4]
fsub dword [ebp + 4]
fld dword [esi + 0x3b8]
fsub dword [ebp + 8]
fxch st(2)
fmul dword [esp + 0x48]
fxch st(2)
fmul dword [esp + 0x50]
faddp st(2)
fmul dword [esp + 0x4c]
faddp st(1)
fcomp dword [0x60477c]
fnstsw ax
test ah, 5
jp 0x499687
mov ebx, 1
jmp 0x499687
cmp ecx, 2
jne 0x49967a
mov eax, dword [esi + 0x444]
test eax, eax
je 0x499687
lea ecx, [esi + 0x3a0]
call fcn.004bb560
test eax, eax
je 0x499687
jmp 0x49967f
cmp ecx, 0xa
jne 0x499687
mov dword [esp + 0x10], 0x43480000
cmp dword [esi + 0x444], 2
jne 0x4996b9
lea ebp, [esi + 0x3a0]
mov ecx, ebp
call fcn.004bb560
test eax, eax
je 0x4996b9
fld dword [esp + 0x14]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 5
jnp 0x4998d9
jmp 0x4998af
lea ebp, [esi + 0x3a0]
mov ecx, ebp
call fcn.004bb8f0
test eax, eax
je 0x499894
lea ecx, [esp + 0x78]
push ecx
mov ecx, ebp
call fcn.004bb720
test eax, eax
je 0x499886
lea edx, [esp + 0x6c]
push edx
mov ecx, esi
call fcn.004ce0e0
fld dword [esp + 0x70]
fmul dword [0x5da740]
fmul dword [0x5da6c4]
fstp dword [esp + 0x24]
mov edi, dword [esp + 0x24]
push edi
call fcn.004beaf0
fstp dword [esp + 0x28]
push edi
call fcn.004beac0
fld dword [esp + 0x1c]
fcomp dword [0x60477c]
add esp, 8
fnstsw ax
test ah, 0x41
jne 0x49976c
fld dword [0x5f53f4]
fdiv dword [esp + 0x14]
fld dword [esp + 0x48]
fmul st(1)
fstp dword [esp + 0x6c]
mov eax, dword [esp + 0x6c]
fld dword [esp + 0x4c]
mov dword [esp + 0x60], eax
fmul st(1)
fstp dword [esp + 0x70]
fld dword [esp + 0x50]
mov ecx, dword [esp + 0x70]
fmul st(1)
mov dword [esp + 0x64], ecx
fstp dword [esp + 0x74]
mov edx, dword [esp + 0x74]
fstp st(0)
mov dword [esp + 0x68], edx
fld dword [esp + 0x78]
fsub dword [esi + 0x204]
fstp dword [esp + 0x3c]
fld dword [esp + 0x7c]
fsub dword [esi + 0x208]
fstp dword [esp + 0x40]
fld dword [esp + 0x80]
fsub dword [esi + 0x20c]
fstp dword [esp + 0x44]
fld dword [esp + 0x3c]
fcomp dword [0x60477c]
fnstsw ax
test ah, 0x44
jp 0x4997ea
fld dword [esp + 0x40]
fcomp dword [0x60477c]
fnstsw ax
test ah, 0x44
jp 0x4997ea
fld dword [esp + 0x44]
fcomp dword [0x60477c]
fnstsw ax
test ah, 0x44
jp 0x4997ea
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x74], edx
fld dword [esp + 0x74]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], ecx
jmp 0x499826
fld dword [esp + 0x3c]
fmul dword [esp + 0x3c]
fld dword [esp + 0x44]
fmul dword [esp + 0x44]
faddp st(1)
fld dword [esp + 0x40]
fmul dword [esp + 0x40]
faddp st(1)
fsqrt
fdivr dword [0x5f53f4]
fld dword [esp + 0x3c]
fmul st(1)
fstp dword [esp + 0x6c]
fld dword [esp + 0x40]
fmul st(1)
fstp dword [esp + 0x70]
fmul dword [esp + 0x44]
fld dword [esp + 0x6c]
fmul dword [esp + 0x60]
fld dword [esp + 0x68]
fmul st(2)
faddp st(1)
fld dword [esp + 0x64]
fmul dword [esp + 0x70]
faddp st(1)
fcomp dword [0x5da2e4]
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x499884
fld dword [esp + 0x60]
fmul st(1)
fld dword [esp + 0x68]
fmul dword [esp + 0x24]
faddp st(1)
fld dword [esp + 0x64]
fmul dword [0x60477c]
faddp st(1)
fcomp dword [0x5da2f8]
fnstsw ax
fstp st(0)
test ah, 0x41
je 0x499894
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x499894
jmp 0x499886
fstp st(0)
fld dword [esp + 0x10]
fmul dword [0x5da2f8]
fstp dword [esp + 0x10]
fld dword [esp + 0x14]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 5
jp 0x4998af
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x4998d9
test ebx, ebx
jne 0x4998d9
mov eax, dword [esi + 0x180]
test eax, eax
je case.default.0x499df7
mov eax, dword [esp + 0x10]
push 0x3f4ccccd
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.004d61c0
add esp, 0xc
cmp eax, 1
jne case.default.0x499df7
mov eax, dword [esi + 0x210]
dec eax
je 0x499d18
dec eax
mov ebx, 1
jne 0x499de1
push ebx
mov ecx, ebp
call fcn.004bb460
test eax, eax
je 0x499de1
and byte [ebp + 0x9e], 0xbf
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xb8]
mov ecx, esi
call fcn.0041d560
mov eax, dword [esi + 0x440]
lea ecx, [eax - 2]
cmp ecx, 0xa
mov dword [esi + 0x210], 0
ja case.0x499936.7
jmp dword [ecx*4 + 0x499edc]
mov ecx, esi
call fcn.004989a0
mov eax, dword [esi]
mov ecx, esi
push 0x1b
call dword [eax + 0x80]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 8
mov edx, dword [esi + 0x444]
mov ecx, dword [esi + 4]
mov edi, 6
cmp edx, edi
je 0x4999c8
cmp eax, 0xa
jne 0x499997
mov eax, dword [esi + 0xc]
test ah, 0x10
jne 0x499997
mov eax, dword [0x680098]
mov edx, dword [eax + 0x10]
mov dword [esi + 0x44c], edx
mov dword [esi + 0x450], 0xa
mov dword [esi + 0x440], ebx
cmp ecx, ebx
jne 0x4999a7
mov eax, dword [esi]
push 0x20
mov ecx, esi
call dword [eax + 0x80]
mov ecx, dword [0x680098]
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x444]
mov dword [esi + 0x448], edx
mov dword [esi + 0x454], eax
mov dword [esi + 0x444], edi
cmp dword [esi + 4], ebx
jne case.0x499df7.1
mov eax, dword [esi + 0xf48]
test eax, eax
je case.0x499df7.1
mov ecx, esi
call fcn.0041dc60
jmp case.0x499df7.1
mov edx, dword [0x680098]
mov ecx, dword [esi + 0x494]
cmp ecx, dword [edx + 0x10]
je 0x499aad
mov ecx, dword [esi + 0xc]
mov ebp, 0x1000
test ebp, ecx
jne 0x499a3b
cmp eax, ebx
je 0x499a3b
test eax, eax
jne 0x499a1b
mov ecx, esi
call fcn.00497220
mov eax, dword [0x680098]
mov ecx, dword [eax + 0x10]
mov edx, dword [esi + 0x440]
mov dword [esi + 0x44c], ecx
mov dword [esi + 0x450], edx
mov dword [esi + 0x440], ebx
mov ecx, dword [esi + 0x444]
mov eax, dword [esi + 4]
mov edi, 6
cmp ecx, edi
je 0x499aad
mov edx, dword [esi + 0x440]
mov ecx, 0xa
cmp edx, ecx
jne 0x499a7c
test dword [esi + 0xc], ebp
jne 0x499a7c
mov edx, dword [0x680098]
mov edx, dword [edx + 0x10]
mov dword [esi + 0x44c], edx
mov dword [esi + 0x450], ecx
mov dword [esi + 0x440], ebx
cmp eax, ebx
jne 0x499a8c
mov eax, dword [esi]
push 0x20
mov ecx, esi
call dword [eax + 0x80]
mov ecx, dword [0x680098]
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x444]
mov dword [esi + 0x448], edx
mov dword [esi + 0x454], eax
mov dword [esi + 0x444], edi
mov eax, dword [esi + 0x664]
test ah, 2
je case.0x499df7.1
mov ecx, esi
call fcn.00497220
mov eax, dword [0x62fe00]
test eax, eax
je case.0x499df7.1
mov ecx, dword [esi + 8]
lea edx, [esp + 0x24]
push edx
push 0xa
mov dword [esp + 0x2c], ecx
call dword [eax + 8]
add esp, 8
jmp case.0x499df7.1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x30]
test eax, eax
je 0x499bd5
mov ecx, dword [esi + 0x664]
and ecx, 0x10
cmp cl, 0x10
mov ebp, 0x1000
jne 0x499b4d
test dword [esi + 0xc], ebp
jne 0x499b54
mov eax, dword [esi + 0x440]
cmp eax, 0xc
je 0x499b54
test eax, eax
jne 0x499b26
mov ecx, esi
call fcn.00497220
mov edx, dword [0x680098]
mov eax, dword [edx + 0x10]
mov ecx, dword [esi + 0x440]
mov dword [esi + 0x44c], eax
mov dword [esi + 0x450], ecx
mov dword [esi + 0x440], 0xc
jmp 0x499b54
mov ecx, esi
call fcn.00498960
mov ecx, dword [esi + 0x444]
mov eax, dword [esi + 4]
mov edi, 6
cmp ecx, edi
je 0x499bc6
mov edx, dword [esi + 0x440]
mov ecx, 0xa
cmp edx, ecx
jne 0x499b95
test dword [esi + 0xc], ebp
jne 0x499b95
mov edx, dword [0x680098]
mov edx, dword [edx + 0x10]
mov dword [esi + 0x44c], edx
mov dword [esi + 0x450], ecx
mov dword [esi + 0x440], ebx
cmp eax, ebx
jne 0x499ba5
mov eax, dword [esi]
push 0x20
mov ecx, esi
call dword [eax + 0x80]
mov ecx, dword [0x680098]
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x444]
mov dword [esi + 0x448], edx
mov dword [esi + 0x454], eax
mov dword [esi + 0x444], edi
or dword [esi + 0x27c], 0x400
jmp case.0x499df7.1
mov ecx, dword [esi + 0x450]
push ecx
mov ecx, esi
call fcn.00498560
mov ecx, dword [esi + 0x444]
mov eax, dword [esi + 4]
mov edi, 6
cmp ecx, edi
je case.0x499df7.1
mov edx, dword [esi + 0x440]
mov ecx, 0xa
cmp edx, ecx
jne 0x499c2b
mov edx, dword [esi + 0xc]
test dh, 0x10
jne 0x499c2b
mov edx, dword [0x680098]
mov edx, dword [edx + 0x10]
mov dword [esi + 0x44c], edx
mov dword [esi + 0x450], ecx
mov dword [esi + 0x440], ebx
cmp eax, ebx
jne 0x499c3b
mov eax, dword [esi]
push 0x20
mov ecx, esi
call dword [eax + 0x80]
mov ecx, dword [0x680098]
mov edx, dword [ecx + 0x10]
mov eax, dword [esi + 0x444]
mov dword [esi + 0x444], edi
mov dword [esi + 0x448], edx
mov dword [esi + 0x454], eax
jmp case.0x499df7.1
mov edx, dword [esi + 0x444]
mov ecx, dword [esi + 4]
mov edi, 5
cmp edx, edi
je 0x499cd4
cmp eax, 0xa
jne 0x499ca3
mov eax, dword [esi + 0xc]
test ah, 0x10
jne 0x499ca3
mov edx, dword [0x680098]
mov eax, dword [edx + 0x10]
mov dword [esi + 0x44c], eax
mov dword [esi + 0x450], 0xa
mov dword [esi + 0x440], 1
cmp ecx, 1
jne 0x499cb4
mov edx, dword [esi]
push 0x20
mov ecx, esi
call dword [edx + 0x80]
mov eax, dword [0x680098]
mov ecx, dword [eax + 0x10]
mov edx, dword [esi + 0x444]
mov dword [esi + 0x448], ecx
mov dword [esi + 0x454], edx
mov dword [esi + 0x444], edi
cmp dword [esi + 4], 1
jne case.0x499df7.1
mov ecx, esi
call fcn.00474700
jmp case.0x499df7.1
mov eax, dword [esi + 0x444]
cmp eax, ebx
je case.0x499df7.1
mov ecx, dword [0x680098]
mov edx, dword [ecx + 0x10]
mov dword [esi + 0x444], ebx
mov dword [esi + 0x448], edx
mov dword [esi + 0x454], eax
jmp case.0x499df7.1
mov ecx, dword [0x680098]
mov edx, dword [esi + 0x200]
mov edi, dword [ecx + 0x10]
mov ecx, dword [0x6800f0]
push edx
call fcn.004d97b0
add eax, edi
mov dword [esi + 0x230], eax
mov eax, dword [esi + 0x200]
mov ecx, dword [0x6800f0]
push eax
call fcn.004d98b0
cmp eax, 0xffffffff
mov dword [esi + 0x200], eax
je 0x499d8c
mov ecx, dword [0x680098]
mov edi, dword [ecx + 0x10]
push 0x41200000
push 0x40a00000
call fcn.004bd540
fmul dword [0x5da724]
add esp, 8
call fcn.0058c3f0
sub edi, eax
add edi, 0x1388
mov dword [esi + 0x460], edi
mov ecx, esi
call fcn.00497220
mov eax, dword [0x62fe00]
test eax, eax
mov edi, dword [esp + 0x20]
je 0x499db8
mov edx, dword [esi + 8]
lea ecx, [esp + 0x24]
push ecx
push 8
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], edi
call dword [eax + 8]
add esp, 8
cmp edi, 0xffffffff
jne 0x499dc1
xor eax, eax
jmp 0x499dce
mov eax, dword [0x6800f0]
mov ecx, dword [eax]
lea edx, [edi + edi*4]
lea eax, [ecx + edx*8]
push 0
push eax
push esi
push 5
call fcn.00515470
add esp, 0x10
mov ebx, 1
mov eax, dword [esi + 0x444]
cmp eax, 0xa
ja case.default.0x499df7
movzx edx, byte [eax + 0x499f14]
jmp dword [edx*4 + 0x499f08]
mov ecx, ebp
call fcn.004bb8c0
mov ecx, dword [eax]
mov dword [esp + 0x54], ecx
mov edx, dword [eax + 4]
lea ecx, [esp + 0x54]
mov dword [esp + 0x58], edx
mov eax, dword [eax + 8]
push ecx
mov ecx, esi
mov dword [esp + 0x60], eax
call fcn.00496510
pop edi
mov dword [esi + 0x210], 2
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 8
mov eax, dword [esi + 0x200]
cmp eax, 0xffffffff
je 0x499e68
mov ecx, dword [0x6800f0]
push eax
call fcn.004d9790
push eax
mov ecx, esi
call fcn.00496510
pop edi
mov dword [esi + 0x210], ebx
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 8
mov edx, dword [0x680098]
mov eax, dword [edx + 0x10]
xor edi, edi
mov dword [esi + 0x448], eax
mov dword [esi + 0x454], edi
mov dword [esi + 0x444], ebx
mov eax, dword [0x62fe00]
cmp eax, edi
je 0x499ec0
mov ecx, dword [esi + 8]
lea edx, [esp + 0x24]
push edx
push 9
mov dword [esp + 0x2c], ecx
call dword [eax + 8]
mov eax, dword [0x68008c]
mov cl, byte [eax + 0x1b8c]
add esp, 8
test cl, 1
je 0x499ec0
lea ecx, [esi + 0x374]
push ecx
mov ecx, esi
call fcn.004ce0e0
mov edx, dword [esi]
push 0x1b
mov ecx, esi
mov dword [esi + 0x210], edi
call dword [edx + 0x80]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 8