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

Disassembly:
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
sub esp, 0x3c
push ebx
mov ebx, dword [esp + 0x48]
push ebp
mov ebp, dword [esp + 0x5c]
push esi
lea esi, [eax*4]
sar esi, 2
push edi
cmp eax, esi
jne 0x10021627
lea esi, [ebx*4]
sar esi, 2
cmp ebx, esi
jne 0x10021627
lea esi, [ecx*4]
sar esi, 2
cmp ecx, esi
jne 0x10021627
lea esi, [edx*4]
sar esi, 2
cmp edx, esi
je 0x100217f8
fild dword [esp + 0x50]
fld st(0)
fild dword [esp + 0x54]
fld st(0)
fild dword [esp + 0x58]
fst qword [esp + 0x34]
fild dword [esp + 0x5c]
fst qword [esp + 0x3c]
fld st(1)
fsub st(5)
fld st(1)
fsub st(4)
cmp eax, 0xe0000000
jge 0x10021673
fstp st(4)
mov esi, 0xe0000000
fstp st(5)
sub esi, eax
mov dword [esp + 0x50], esi
fild dword [esp + 0x50]
fmul st(3)
fdiv st(5)
faddp st(4)
fld qword [0x100cb660]
jmp 0x100216a3
cmp eax, 0x1fffffff
jle 0x10021699
fstp st(4)
add eax, 0xe0000001
fstp st(5)
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fmul st(3)
fdiv st(5)
fsubp st(4)
fld qword [0x100cb658]
jmp 0x100216a3
fstp st(5)
fxch st(5)
fxch st(3)
fxch st(4)
fxch st(3)
fld qword [0x100cb660]
fcomp st(5)
fnstsw ax
test ah, 0x41
jne 0x100216d5
fstp st(4)
mov eax, 0xe0000000
fstp st(3)
sub eax, ebx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fmul st(4)
fdiv st(2)
faddp st(5)
fld qword [0x100cb660]
fld st(0)
jmp 0x10021718
fld qword [0x100cb658]
fcomp st(5)
fnstsw ax
test ah, 5
jp 0x1002170c
fstp st(4)
add ebx, 0xe0000001
fstp st(3)
mov dword [esp + 0x50], ebx
fild dword [esp + 0x50]
fmul st(4)
fdiv st(2)
fsubp st(5)
fld qword [0x100cb658]
fld qword [0x100cb660]
fxch st(1)
jmp 0x10021718
fstp st(6)
fld qword [0x100cb660]
fxch st(1)
fxch st(4)
cmp ecx, 0xe0000000
jge 0x1002173f
fstp st(4)
mov eax, 0xe0000000
fstp st(1)
sub eax, ecx
mov dword [esp + 0x50], eax
fild dword [esp + 0x50]
fmul st(2)
fdiv st(4)
fadd qword [esp + 0x3c]
fld st(1)
jmp 0x1002176f
cmp ecx, 0x1fffffff
jle 0x10021769
fstp st(4)
add ecx, 0xe0000001
fstp st(1)
mov dword [esp + 0x50], ecx
fild dword [esp + 0x50]
fmul st(2)
fdiv st(4)
fsubr qword [esp + 0x3c]
fld qword [0x100cb658]
jmp 0x1002176f
fxch st(4)
fxch st(1)
fxch st(2)
fxch st(1)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x10021799
fstp st(0)
mov ecx, 0xe0000000
fstp st(0)
sub ecx, edx
mov dword [esp + 0x50], ecx
fild dword [esp + 0x50]
fmulp st(4)
fxch st(3)
fdivrp st(1)
fadd qword [esp + 0x34]
jmp 0x100217ce
fstp st(2)
fld qword [0x100cb658]
fcom st(2)
fnstsw ax
test ah, 5
jp 0x100217c8
fstp st(2)
add edx, 0xe0000001
fstp st(0)
mov dword [esp + 0x50], edx
fild dword [esp + 0x50]
fmulp st(4)
fxch st(3)
fdivrp st(1)
fsubr qword [esp + 0x34]
jmp 0x100217ce
fstp st(5)
fstp st(2)
fstp st(3)
fxch st(3)
call fcn.100b4c40
mov dword [esp + 0x50], eax
call fcn.100b4c40
fxch st(1)
mov ebx, eax
mov dword [esp + 0x54], ebx
call fcn.100b4c40
mov dword [esp + 0x58], eax
call fcn.100b4c40
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x18], eax
sub eax, edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x3c], eax
cdq
mov esi, eax
xor esi, edx
sub esi, edx
mov dword [esp + 0x1c], ecx
sub ecx, ebx
mov eax, ecx
cdq
mov edi, eax
mov eax, dword [ebp + 4]
xor edi, edx
sub edi, edx
mov edx, dword [ebp]
mov dword [esp + 0x28], edx
mov edx, dword [ebp + 8]
mov ebp, dword [ebp + 0xc]
dec edx
dec ebp
cmp esi, edi
setge byte [esp + 0x64]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], ebp
cmp ebx, eax
jge 0x10021860
mov ecx, 1
jmp 0x1002186b
xor ecx, ecx
cmp ebx, ebp
setle cl
dec ecx
and ecx, 2
mov ebx, dword [esp + 0x28]
cmp dword [esp + 0x50], ebx
jge 0x1002187c
mov eax, 4
jmp 0x10021889
xor eax, eax
cmp dword [esp + 0x50], edx
setle al
dec eax
and eax, 8
or eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x24]
jge 0x100218a0
mov ecx, 1
jmp 0x100218ab
xor ecx, ecx
cmp eax, ebp
setle cl
dec ecx
and ecx, 2
mov ebp, dword [esp + 0x58]
cmp ebp, ebx
jge 0x100218ba
mov eax, 4
jmp 0x100218c5
xor eax, eax
cmp ebp, edx
setle al
dec eax
and eax, 8
mov edx, dword [esp + 0x20]
or eax, ecx
mov ebx, eax
or eax, edx
je 0x10021be7
test edx, ebx
jne 0x10021c46
test edx, edx
je 0x10021a62
test dl, 3
je 0x1002197c
test dl, 1
je 0x100218fd
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10], ecx
jmp 0x10021905
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x54]
cdq
mov ecx, edx
mov ebp, eax
test ecx, ecx
jg 0x10021923
jl 0x1002191c
test ebp, ebp
jae 0x10021923
neg ebp
adc ecx, 0
neg ecx
push ecx
mov eax, esi
cdq
push ebp
push edx
push eax
call fcn.100b50f0
shld edx, eax, 1
lea ecx, [eax + eax]
mov ebp, edx
mov eax, edi
cdq
add ecx, eax
adc ebp, edx
cmp byte [esp + 0x64], 0
je 0x10021950
mov eax, edi
sub eax, esi
dec eax
cdq
add ecx, eax
adc ebp, edx
lea eax, [edi + edi]
cdq
push edx
push eax
push ebp
push ecx
call fcn.100b5040
cmp dword [esp + 0x3c], 0
jge 0x1002196f
neg eax
adc edx, 0
neg edx
mov dword [esp + 0x48], edx
add eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
jmp 0x10021a0e
test dl, 0xc
je 0x10021a0e
test dl, 4
je 0x10021994
mov edx, dword [esp + 0x28]
mov dword [esp + 0x14], edx
jmp 0x1002199c
mov eax, dword [esp + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x50]
cdq
mov ecx, edx
mov ebp, eax
test ecx, ecx
jg 0x100219ba
jl 0x100219b3
test ebp, ebp
jae 0x100219ba
neg ebp
adc ecx, 0
neg ecx
push ecx
mov eax, edi
cdq
push ebp
push edx
push eax
call fcn.100b50f0
shld edx, eax, 1
lea ecx, [eax + eax]
mov ebp, edx
mov eax, esi
cdq
add ecx, eax
adc ebp, edx
cmp byte [esp + 0x64], 0
jne 0x100219e7
mov eax, esi
sub eax, edi
dec eax
cdq
add ecx, eax
adc ebp, edx
lea eax, [esi + esi]
cdq
push edx
push eax
push ebp
push ecx
call fcn.100b5040
cmp dword [esp + 0x34], 0
jge 0x10021a06
neg eax
adc edx, 0
neg edx
mov dword [esp + 0x48], edx
add eax, dword [esp + 0x54]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x24]
jge 0x10021a1f
mov ecx, 1
jmp 0x10021a2c
xor ecx, ecx
cmp eax, dword [esp + 0x2c]
setle cl
dec ecx
and ecx, 2
mov ebp, dword [esp + 0x14]
cmp ebp, dword [esp + 0x28]
jge 0x10021a48
mov eax, 4
or eax, ecx
mov dword [esp + 0x20], eax
mov edx, eax
jmp 0x10021bdd
xor eax, eax
cmp ebp, dword [esp + 0x30]
setle al
dec eax
and eax, 8
or eax, ecx
mov dword [esp + 0x20], eax
mov edx, eax
jmp 0x10021bdd
test bl, 3
je 0x10021b00
test bl, 1
je 0x10021a7a
mov edx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
jmp 0x10021a82
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x5c]
cdq
mov ecx, edx
mov ebp, eax
test ecx, ecx
jg 0x10021aa0
jl 0x10021a99
test ebp, ebp
jae 0x10021aa0
neg ebp
adc ecx, 0
neg ecx
push ecx
mov eax, esi
cdq
push ebp
push edx
push eax
call fcn.100b50f0
shld edx, eax, 1
lea ecx, [eax + eax]
mov ebp, edx
mov eax, edi
cdq
add ecx, eax
adc ebp, edx
cmp byte [esp + 0x64], 0
je 0x10021ace
mov eax, edi
sub eax, esi
cdq
add ecx, eax
adc ebp, edx
jmp 0x10021ad4
add ecx, 0xffffffff
adc ebp, 0xffffffff
lea eax, [edi + edi]
cdq
push edx
push eax
push ebp
push ecx
call fcn.100b5040
cmp dword [esp + 0x3c], 0
jle 0x10021af3
neg eax
adc edx, 0
neg edx
mov dword [esp + 0x48], edx
add eax, dword [esp + 0x58]
mov dword [esp + 0x18], eax
jmp 0x10021b99
test bl, 0xc
je 0x10021b9d
test bl, 4
je 0x10021b18
mov edx, dword [esp + 0x28]
mov dword [esp + 0x18], edx
jmp 0x10021b20
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x58]
cdq
mov ecx, edx
mov ebp, eax
test ecx, ecx
jg 0x10021b3e
jl 0x10021b37
test ebp, ebp
jae 0x10021b3e
neg ebp
adc ecx, 0
neg ecx
push ecx
mov eax, edi
cdq
push ebp
push edx
push eax
call fcn.100b50f0
shld edx, eax, 1
lea ecx, [eax + eax]
mov ebp, edx
mov eax, esi
cdq
add ecx, eax
adc ebp, edx
cmp byte [esp + 0x64], 0
je 0x10021b69
add ecx, 0xffffffff
adc ebp, 0xffffffff
jmp 0x10021b72
mov eax, esi
sub eax, edi
cdq
add ecx, eax
adc ebp, edx
lea eax, [esi + esi]
cdq
push edx
push eax
push ebp
push ecx
call fcn.100b5040
cmp dword [esp + 0x34], 0
jle 0x10021b91
neg eax
adc edx, 0
neg edx
mov dword [esp + 0x48], edx
add eax, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x24]
jge 0x10021bae
mov ecx, 1
jmp 0x10021bbb
xor ecx, ecx
cmp eax, dword [esp + 0x2c]
setle cl
dec ecx
and ecx, 2
mov ebp, dword [esp + 0x18]
cmp ebp, dword [esp + 0x28]
jge 0x10021bcc
mov eax, 4
jmp 0x10021bd9
xor eax, eax
cmp ebp, dword [esp + 0x30]
setle al
dec eax
and eax, 8
or eax, ecx
mov ebx, eax
mov eax, ebx
or eax, edx
jne 0x100218d5
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
mov dword [ecx], edx
mov ecx, dword [esp + 0x10]
xor edx, edx
mov dword [eax], ecx
mov eax, dword [esp + 0x7c]
cmp byte [esp + 0x64], dl
je 0x10021c50
cmp dword [esp + 0x3c], edx
lea ecx, [esi + esi]
setl dl
lea ebp, [edi + edi]
inc edx
mov dword [eax], edx
mov eax, dword [esp + 0x84]
xor edx, edx
cmp dword [esp + 0x34], edx
setl dl
neg esi
lea edx, [edx*4 + 4]
mov dword [eax], edx
mov edx, dword [esp + 0x18]
mov eax, edx
sub eax, dword [esp + 0x14]
cmp edx, dword [esp + 0x58]
je 0x10021c8f
xor ebx, ebx
jmp 0x10021c93
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x3c
ret
cmp dword [esp + 0x34], edx
lea ecx, [edi + edi]
setl dl
lea ebp, [esi + esi]
lea edx, [edx*4 + 4]
mov dword [eax], edx
mov eax, dword [esp + 0x84]
xor edx, edx
cmp dword [esp + 0x3c], edx
setl dl
neg edi
inc edx
mov dword [eax], edx
mov edx, dword [esp + 0x1c]
mov eax, edx
sub eax, dword [esp + 0x10]
cmp edx, dword [esp + 0x5c]
je 0x10021c8f
xor ebx, ebx
jmp 0x10021c93
mov ebx, dword [esp + 0x60]
cdq
xor eax, edx
sub eax, edx
mov edx, 1
sub edx, ebx
add eax, edx
mov dword [esp + 0x58], eax
je 0x10021c46
mov ebx, dword [esp + 0x54]
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x10]
sar eax, 1
neg eax
cmp edx, ebx
je 0x10021cc8
sub edx, ebx
jns 0x10021cc2
neg edx
imul edx, esi
lea eax, [eax + edx*2]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x50]
cmp edx, esi
je 0x10021ce0
sub edx, esi
jns 0x10021cda
neg edx
imul edx, edi
lea eax, [eax + edx*2]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x58]
mov dword [edx], esi
mov edx, dword [esp + 0x74]
add eax, ebp
mov dword [edx], eax
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x80]
pop edi
mov dword [eax], ebp
pop esi
sub ecx, ebp
pop ebp
mov dword [edx], ecx
mov al, 1
pop ebx
add esp, 0x3c
ret