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

Disassembly:
sub esp, 0xb4
mov eax, dword [ecx + 0x71]
push ebx
push ebp
push esi
mov esi, dword [esp + 0xc4]
mov ebx, dword [eax + 0x5f47]
mov dword [esp + 0xc], ecx
push edi
mov ax, word [esi + 0x36b]
mov ecx, dword [ebx + 0x7c]
mov dword [esp + 0x48], eax
and eax, 0xffff
cmp eax, 0x11
mov dword [esp + 0x38], ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x44], eax
je 0x41570f
cmp eax, 0x18
je 0x4156ba
cmp eax, 0x2d
jne 0x4157c3
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x64]
fdiv dword [esp + 0x14]
fadd dword [0x4f0590]
call fcn.004ecc00
mov ebp, eax
mov dword [esp + 0x20], 0xffffffff
dec ebp
add esi, 0xf9
mov edi, 4
lea edx, [esp + 0xa8]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 0x58], ecx
mov ecx, dword [esi + 8]
push ecx
push eax
jmp 0x415750
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x64]
fdiv dword [esp + 0x14]
fadd dword [0x4f0590]
call fcn.004ecc00
fld dword [esi + 0x1a66]
fdiv dword [esp + 0x14]
mov ebp, eax
dec ebp
fadd dword [0x4f0590]
call fcn.004ecc00
inc eax
add esi, 0xf9
mov dword [esp + 0x20], eax
mov edi, 2
mov eax, dword [esi]
lea edx, [esp + 0xb0]
mov ecx, dword [esi + 4]
mov dword [esp + 0x58], ecx
mov ecx, dword [esi + 8]
push ecx
push eax
jmp 0x415750
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x64]
fdiv dword [esp + 0x14]
fadd dword [0x4f0590]
call fcn.004ecc00
mov ebp, eax
mov dword [esp + 0x20], 0xffffffff
dec ebp
add esi, 0xf9
mov edi, 4
lea edx, [esp + 0xa0]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [esp + 0x58], ecx
mov ecx, dword [esi + 8]
push ecx
push eax
push edx
mov ecx, ebx
call fcn.004afa10
mov ecx, eax
mov eax, dword [ecx]
mov dword [esp + 0x54], eax
mov ecx, dword [ecx + 4]
mov dword [esp + 0x58], ecx
lea edx, [ecx + ebp + 1]
sub ecx, ebp
push edx
lea edx, [eax + ebp + 1]
sub eax, ebp
dec ecx
push edx
dec eax
push ecx
push eax
lea eax, [esp + 0x88]
push eax
call fcn.004012b0
mov ecx, dword [ebx + 0x78]
mov edx, dword [ebx + 0x74]
dec ecx
dec edx
push ecx
push edx
push 0
lea eax, [esp + 0xb0]
push 0
push eax
call fcn.004012b0
lea ecx, [esp + 0xb8]
lea edx, [esp + 0xa0]
push ecx
lea eax, [esp + 0x94]
push edx
push eax
call fcn.004011d0
add esp, 0x34
jmp 0x4157cb
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x6c]
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x68]
cmp edi, 1
mov dword [esp + 0x50], eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], 1
jl 0x4157fe
mov dword [esp + 0x34], edi
mov ecx, dword [esp + 0x70]
fild dword [esp + 0x34]
sub ecx, eax
inc ecx
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fdiv st(1)
fadd qword [0x4f0458]
call fcn.004ecc00
mov edx, dword [esp + 0x74]
mov edi, eax
sub edx, esi
mov dword [esp + 0x18], edi
inc edx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fdiv st(1)
fadd qword [0x4f0458]
call fcn.004ecc00
mov esi, eax
mov dword [esp + 0x3c], eax
imul esi, edi
fstp st(0)
test edi, edi
jle 0x4158c4
test eax, eax
jle 0x4158c4
lea edi, [esi*4]
push edi
call fcn.004eccce
push edi
mov dword [esp + 0x30], eax
call fcn.004eccce
push edi
mov dword [esp + 0x3c], eax
call fcn.004eccce
push edi
mov dword [esp + 0x3c], eax
call fcn.004eccce
add esp, 0x10
mov dword [esp + 0x14], eax
test esi, esi
jle 0x4158c0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x14]
sub ecx, eax
sub edx, eax
sub edi, eax
mov dword [ecx + eax], 0
mov dword [eax], 0
mov dword [edx + eax], 0
mov dword [edi + eax], 0
add eax, 4
dec esi
jne 0x41589f
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x71]
mov esi, dword [ecx + 0x5fb3]
test esi, esi
je 0x415b04
mov al, byte [esi + 0x188e]
test al, al
je 0x4158f1
mov ecx, esi
call fcn.004be220
mov esi, eax
jmp 0x415afc
mov ecx, dword [esp + 0x10]
push esi
call fcn.004155e0
cmp word [esp + 0x48], 0x2d
mov di, word [esi + 0x36b]
mov dword [esp + 0x4c], eax
jne 0x41592a
mov ecx, dword [esp + 0x10]
push esi
call fcn.00415470
test al, al
je 0x41592a
mov ecx, esi
call fcn.004be220
mov esi, eax
jmp 0x415afc
cmp di, 1
je 0x415aef
cmp di, 6
je 0x415aef
cmp di, 7
je 0x415aef
cmp di, 0x23
je 0x415aef
lea edx, [esi + 0xf9]
mov eax, dword [esi + 0xf9]
mov ecx, dword [edx + 4]
mov dword [esp + 0xbc], ecx
mov ecx, dword [edx + 8]
lea edx, [esp + 0x88]
push ecx
push eax
push edx
mov ecx, ebx
call fcn.004afa10
mov ecx, dword [eax]
mov ebx, dword [esp + 0x50]
mov edi, dword [eax + 4]
mov eax, ecx
sub eax, ebx
mov ebx, dword [esp + 0x34]
cdq
idiv ebx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov eax, edi
sub eax, edx
cdq
idiv ebx
mov ebx, eax
mov eax, dword [esp + 0x24]
test eax, eax
jl 0x415aef
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
cmp edx, eax
jge 0x415aef
test ebx, ebx
jl 0x415aef
cmp ebx, dword [esp + 0x3c]
jge 0x415aef
mov eax, dword [esp + 0x54]
sub eax, ecx
mov ecx, dword [esp + 0x58]
sub ecx, edi
mov edx, ecx
imul edx, ecx
ror dword [ebx - 0x3750f038], 1
add edx, ecx
mov dword [esp + 0x1c], edx
fild dword [esp + 0x1c]
fsqrt
fadd qword [0x4f0458]
call fcn.004ecc00
mov ecx, esi
mov edi, eax
call fcn.004be3d0
test ebp, ebp
jle 0x415a14
lea edx, [ebp + 1]
cmp edi, edx
jg 0x415aef
mov ecx, dword [esp + 0x20]
test ecx, ecx
jle 0x415a24
cmp edi, ecx
jl 0x415aef
imul ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x4c]
add ebx, edi
test ecx, ecx
mov edi, ebx
jge 0x415a9f
test al, al
mov ecx, esi
jne 0x415a6f
call fcn.004be0c0
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
mov dword [ecx + edi*4], eax
mov ax, word [esi + 0x36b]
mov ecx, dword [edx + 0x71]
and eax, 0xffff
push eax
call fcn.004d1690
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + edi*4]
add edx, eax
jmp 0x415aec
call fcn.004be0c0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [ecx + edi*4], eax
mov ax, word [esi + 0x36b]
mov ecx, dword [edx + 0x71]
and eax, 0xffff
push eax
call fcn.004d1690
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + edi*4]
add edx, eax
jmp 0x415aec
mov dl, byte [esp + 0xd0]
test dl, dl
je 0x415aef
test ecx, ecx
jle 0x415aef
test al, al
mov ax, word [esi + 0x36b]
jne 0x415ad1
and eax, 0xffff
push eax
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x71]
call fcn.004d1690
mov ecx, dword [esp + 0x28]
jmp 0x415ae7
mov ecx, dword [esp + 0x10]
and eax, 0xffff
push eax
mov ecx, dword [ecx + 0x71]
call fcn.004d1690
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + edi*4]
sub edx, eax
mov dword [ecx + edi*4], edx
mov ecx, esi
call fcn.004be220
mov ebx, dword [esp + 0x38]
mov esi, eax
test esi, esi
jne 0x4158d9
mov edx, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], eax
lea ecx, [edx - 2]
cmp ecx, eax
jle 0x415ca3
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
add eax, 0xfffffffe
mov dword [esp + 0x4c], edi
mov dword [esp + 0x3c], eax
lea eax, [ebx*4]
lea edx, [esi + 4]
mov dword [esp + 0x54], eax
add eax, edi
lea esi, [esi + ebx*4 + 4]
mov dword [esp + 0x40], edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x48], esi
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jle 0x415c5c
mov ecx, dword [esp + 0x2c]
mov ebp, eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x28]
sub ecx, eax
sub ebx, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
sub ecx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x2c]
sub eax, ecx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x14]
sub eax, ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x88], eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x64]
mov eax, dword [edx + ebx]
add eax, dword [ecx + ebp]
add eax, dword [ecx + edi]
mov ecx, dword [esi + ebx]
add eax, ecx
mov ecx, dword [esi - 4]
add ecx, dword [edx - 4]
add ecx, dword [edx]
add ecx, dword [esi]
cmp eax, dword [esp + 0x24]
jle 0x415c00
mov dword [esp + 0x24], eax
mov eax, dword [edi]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x415c00
mov eax, dword [esp + 0x38]
mov eax, dword [edx + eax]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x415c00
mov eax, dword [ebp]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x415c00
mov eax, dword [esp + 0x38]
mov eax, dword [esi + eax]
mov dword [esp + 0x18], eax
cmp ecx, dword [esp + 0x20]
jle 0x415c41
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x88]
mov eax, dword [ecx + edi]
test eax, eax
mov dword [esp + 0x10], eax
jne 0x415c41
mov eax, dword [esp + 0x34]
mov eax, dword [edx + eax]
test eax, eax
mov dword [esp + 0x10], eax
jne 0x415c41
mov eax, dword [ecx + ebp]
test eax, eax
mov dword [esp + 0x10], eax
jne 0x415c41
mov ecx, dword [esp + 0x34]
mov eax, dword [esi + ecx]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
add edi, eax
add edx, eax
add ebp, eax
add esi, eax
mov eax, dword [esp + 0x60]
dec eax
mov dword [esp + 0x60], eax
jne 0x415bab
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
add edi, 4
add edx, 4
add eax, 4
add esi, 4
dec ecx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x40], edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x48], esi
mov dword [esp + 0x1c], ecx
jne 0x415b5c
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
cmp eax, edi
jl 0x415cb4
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0x18]
mov edi, eax
mov dword [ecx], edx
jmp 0x415cc1
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
mov eax, dword [esp + 0x44]
cmp eax, 0x11
je 0x415ce2
cmp eax, 0x18
je 0x415cdb
cmp eax, 0x2d
jne 0x415ce9
mov esi, 0x4b0
jmp 0x415ced
mov esi, 0x2bc
jmp 0x415ced
mov esi, 0xfa0
jmp 0x415ced
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
test eax, eax
je 0x415cfe
push eax
call fcn.004eccc8
add esp, 4
mov eax, dword [esp + 0x30]
test eax, eax
je 0x415d0f
push eax
call fcn.004eccc8
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x415d20
push eax
call fcn.004eccc8
add esp, 4
mov eax, dword [esp + 0x14]
test eax, eax
je 0x415d31
push eax
call fcn.004eccc8
add esp, 4
mov eax, edi
pop edi
sub eax, esi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret 0xc