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

Disassembly:
push ebp
push edi
mov edx, 1
push esi
push ebx
xor ebx, ebx
sub esp, 0xcc
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0xe0]
mov dword [esp + 0xa0], 1
mov eax, dword [eax + 8]
mov esi, ecx
mov dword [esp + 0x18], eax
sar eax, 0x1f
not eax
and eax, dword [ecx + 8]
mov dword [esp + 0x9c], eax
jmp 0xb59d46
mov ebx, ecx
movsx edi, word [esi + ebx*4 + 0xc]
lea ecx, [ebx + 1]
imul edx, edi
cmp word [esi + ebx*4 + 0xe], 1
mov eax, edi
mov dword [esp + ecx*4 + 0xa0], edx
jne 0xb59d44
mov edi, dword [esp + 0xe0]
mov dword [esp + 0x70], ebx
movsx ecx, word [edi + ecx*4 + 0xa]
mov dword [esp + 0x64], ecx
lea ecx, [edi + ebx*4]
mov dword [esp + 0x74], ecx
lea esi, [esi]
mov ebp, dword [esp + 0x70]
test ebp, ebp
je 0xb5a6c5
mov ecx, dword [esp + 0x74]
cmp ax, 3
movsx ebx, word [ecx + 0xa]
mov dword [esp + 0x78], ebx
je 0xb5a498
jle 0xb5a190
cmp ax, 4
je 0xb5a291
cmp ax, 5
jne 0xb5a160
mov eax, dword [esp + 0x70]
movzx ecx, byte [esp + 0x9c]
mov eax, dword [esp + eax*4 + 0xa0]
mov ebx, eax
mov edi, eax
mov dword [esp + 0x7c], eax
shl ebx, cl
mov eax, dword [esp + 0xe0]
mov ecx, ebx
mov ebx, dword [esp + 0x64]
mov eax, dword [eax + 0x30]
mov edx, ebx
imul edx, ecx
mov dword [esp + 0x94], eax
shl edx, 3
add eax, edx
fld dword [eax]
fstp dword [esp + 0x28]
fld dword [eax + 4]
add eax, edx
test edi, edi
fstp dword [esp + 0x2c]
fld dword [eax]
fstp dword [esp + 0x30]
fld dword [eax + 4]
fstp dword [esp + 0x34]
jle 0xb5a160
lea eax, [ebx*8]
mov edx, ebx
mov dword [esp + 0x68], 0
shl edx, 5
mov esi, eax
mov dword [esp + 0x98], eax
mov eax, ebx
shl eax, 4
mov edi, eax
mov dword [esp + 0x84], eax
lea eax, [ebx + ebx*2]
mov ebx, dword [esp + 0x78]
sub edx, edi
shl eax, 3
mov dword [esp + 0x90], edx
sub eax, edi
shl ebx, 3
mov dword [esp + 0x8c], eax
mov dword [esp + 0x80], ebx
mov ebx, dword [esp + 0xe4]
add ebx, edi
mov dword [esp + 0x6c], ebx
lea ebx, [ecx*8]
mov dword [esp + 0x5c], ebx
mov ebx, ecx
shl ebx, 4
mov dword [esp + 0x58], ebx
lea ebx, [ecx + ecx*2]
shl ecx, 5
mov dword [esp + 0x54], ecx
mov ecx, esi
shl ebx, 3
sub ecx, edi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x88], ecx
lea esi, [esi]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
mov esi, dword [esp + 0x64]
mov eax, edi
sub eax, dword [esp + 0x84]
add edx, edi
add ecx, edi
add ebx, edi
test esi, esi
mov dword [esp + 0x20], eax
mov eax, edi
jle 0xb5a134
mov edi, dword [esp + 0x6c]
add edi, dword [esp + 0x98]
mov esi, dword [esp + 0x94]
mov dword [esp + 0x18], edx
mov dword [esp + 0x50], edi
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
add eax, 8
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x44]
add ecx, 8
add ebx, 8
fld dword [esi]
add esi, 8
mov dword [esp + 0x48], edi
fstp dword [esp + 0x20]
fld dword [esi - 4]
fstp dword [esp + 0x24]
fld dword [edx]
fld dword [edi]
fld dword [edx + 4]
mov edx, dword [esp + 0x1c]
fld dword [edi + 4]
mov edi, dword [esp + 0x40]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fstp dword [esp + 0x38]
fmulp st(3)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x3c]
fld dword [eax - 8]
fld dword [ebp]
fld dword [eax - 4]
fld dword [ebp + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld dword [ecx - 8]
fld dword [edi]
fld dword [ecx - 4]
fld dword [edi + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x40]
fld dword [ebx - 8]
fld dword [edx]
fld dword [ebx - 4]
fld st(2)
fmul st(2)
fld dword [edx + 4]
fmul st(2)
fsubp st(1)
fxch st(3)
fmul dword [edx + 4]
fxch st(2)
fmulp st(1)
faddp st(1)
fld dword [esp + 0x38]
fadd st(2)
fld dword [esp + 0x3c]
mov edx, dword [esp + 0x18]
fadd st(2)
fxch st(3)
fsubr dword [esp + 0x38]
fstp dword [esp + 0x38]
fxch st(1)
fsubr dword [esp + 0x3c]
fstp dword [esp + 0x3c]
fld st(4)
fadd st(3)
fld st(4)
fld dword [esp + 0x40]
fadd st(1), st(0)
fxch st(7)
fsubrp st(5)
fxch st(4)
fstp dword [esp + 0x40]
fxch st(4)
fsubrp st(5)
fxch st(4)
fstp dword [esp + 0x44]
fld st(3)
fadd st(3)
fadd dword [esp + 0x20]
fstp dword [esi - 8]
fld st(0)
fadd st(2)
fadd dword [esp + 0x24]
fstp dword [esi - 4]
fld dword [esp + 0x28]
fld st(0)
fmul st(5)
fld dword [esp + 0x30]
fld st(0)
fmul st(6)
faddp st(2)
fxch st(1)
fadd dword [esp + 0x20]
fxch st(3)
fst dword [esp + 0x4c]
fmulp st(2)
fmul st(3)
faddp st(1)
fadd dword [esp + 0x24]
fld dword [esp + 0x2c]
fld dword [esp + 0x3c]
fmul st(1)
fld dword [esp + 0x34]
fmul dword [esp + 0x44]
faddp st(1)
fld dword [esp + 0x38]
fmulp st(2)
fld dword [esp + 0x34]
fmul dword [esp + 0x40]
faddp st(2)
fld st(3)
fsub st(1)
fstp dword [edx]
fld st(2)
fadd st(2)
fstp dword [edx + 4]
faddp st(3)
fxch st(2)
fstp dword [ebx - 8]
fsubrp st(1)
fstp dword [ebx - 4]
fld dword [esp + 0x30]
fmul st(3), st(0)
fld dword [esp + 0x28]
fmul st(3), st(0)
fxch st(4)
faddp st(3)
fxch st(2)
fadd dword [esp + 0x20]
fld dword [esp + 0x4c]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x48]
fmulp st(3)
fxch st(1)
add dword [esp + 0x18], 8
add esi, edx
mov edx, dword [esp + 0x54]
add dword [esp + 0x1c], edx
fmulp st(3)
fxch st(2)
faddp st(1)
fadd dword [esp + 0x24]
fld dword [esp + 0x44]
fld dword [esp + 0x2c]
fmul st(1), st(0)
fld dword [esp + 0x3c]
fld dword [esp + 0x34]
fmul st(1), st(0)
fxch st(1)
fsubp st(3)
fld dword [esp + 0x38]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x58]
fmulp st(1)
add ebp, esi
mov esi, edi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x44], ebp
fld dword [esp + 0x40]
add esi, edi
fmulp st(2)
mov dword [esp + 0x40], esi
fsubrp st(1)
fld st(3)
fadd st(2)
fstp dword [eax - 8]
fld st(2)
fadd st(1)
fstp dword [eax - 4]
fxch st(1)
fsubp st(3)
fxch st(2)
fstp dword [ecx - 8]
fsubrp st(1)
fstp dword [ecx - 4]
cmp eax, dword [esp + 0x50]
jne 0xb59f14
add dword [esp + 0x68], 1
mov edi, dword [esp + 0x80]
mov eax, dword [esp + 0x68]
add dword [esp + 0x6c], edi
cmp dword [esp + 0x7c], eax
jne 0xb59eb0
jmp 0xb5a160
fstp st(0)
jmp 0xb5a160
fstp st(0)
lea esi, [esi]
mov eax, dword [esp + 0x78]
sub dword [esp + 0x70], 1
sub dword [esp + 0x74], 4
mov ebx, dword [esp + 0x74]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x70]
cmp eax, 0xffffffff
je 0xb5a60d
movzx eax, word [ebx + 0xc]
jmp 0xb59d80
cmp ax, 2
jne 0xb5a160
cmp dword [esp + 0x64], 4
mov eax, dword [esp + 0x70]
mov edx, dword [esp + eax*4 + 0xa0]
jne 0xb5a6a9
xor ecx, ecx
test edx, edx
mov eax, dword [esp + 0xe4]
fld dword [0xe0be64]
jle 0xb5a154
nop
fld dword [eax + 0x20]
add ecx, 1
add eax, 0x40
fld dword [eax - 0x1c]
fld dword [eax - 0x40]
fld st(0)
fsub st(3)
fstp dword [eax - 0x20]
fld dword [eax - 0x3c]
fld st(0)
fsub st(3)
fstp dword [eax - 0x1c]
fxch st(3)
faddp st(1)
fstp dword [eax - 0x40]
faddp st(1)
fstp dword [eax - 0x3c]
fld dword [eax - 0x18]
fld dword [eax - 0x14]
fld st(1)
fadd st(1)
fmul st(3)
fxch st(1)
fsubrp st(2)
fxch st(1)
fmul st(2)
fld dword [eax - 0x38]
fld st(0)
fsub st(3)
fstp dword [eax - 0x18]
fld dword [eax - 0x34]
fld st(0)
fsub st(3)
fstp dword [eax - 0x14]
fxch st(3)
faddp st(1)
fstp dword [eax - 0x38]
faddp st(1)
fstp dword [eax - 0x34]
fld dword [eax - 0xc]
fld dword [eax - 0x10]
fld dword [eax - 0x30]
fld st(0)
fsub st(3)
fstp dword [eax - 0x10]
fld dword [eax - 0x2c]
fld st(2)
fadd st(1)
fstp dword [eax - 0xc]
fxch st(3)
faddp st(1)
fstp dword [eax - 0x30]
fsubp st(1)
fstp dword [eax - 0x2c]
fld dword [eax - 4]
fld dword [eax - 8]
fld st(1)
fsub st(1)
fmul st(3)
fxch st(2)
faddp st(1)
fchs
fmul st(2)
fld dword [eax - 0x28]
fld st(0)
fsub st(3)
fstp dword [eax - 8]
fld dword [eax - 0x24]
fld st(0)
fsub st(3)
fstp dword [eax - 4]
fxch st(3)
faddp st(1)
fstp dword [eax - 0x28]
faddp st(1)
fstp dword [eax - 0x24]
cmp edx, ecx
jne 0xb5a1c0
fstp st(0)
jmp 0xb5a160
mov dword [esp + 0x78], 1
mov eax, dword [esp + 0x70]
cmp dword [esp + 0x64], 1
mov eax, dword [esp + eax*4 + 0xa0]
mov dword [esp + 0x40], eax
je 0xb5a618
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x64]
test eax, eax
lea edx, [ebx + ebx*2]
jle 0xb5a160
movzx ecx, byte [esp + 0x9c]
lea ebp, [edx*8]
mov dword [esp + 0x38], 0
shl eax, cl
mov ecx, dword [esp + 0xe0]
lea edi, [eax*8]
mov dword [esp + 0x2c], edi
mov edi, eax
lea eax, [eax + eax*2]
mov ecx, dword [ecx + 0x30]
shl edi, 4
shl eax, 3
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x48], ecx
mov ecx, ebx
shl ebx, 4
lea ecx, [ecx*8]
shl eax, 3
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x3c], eax
mov edi, dword [esp + 0x64]
mov eax, dword [esp + 0x3c]
test edi, edi
jle 0xb5a470
mov edi, dword [esp + 0x3c]
lea edx, [edi + 4]
add edi, ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x24]
lea esi, [esi]
mov esi, dword [esp + 0x20]
fld dword [eax + ecx]
add edx, 8
mov edi, dword [esp + 0x18]
add eax, 8
fld dword [esi]
fld dword [edx + ecx - 8]
fld dword [esi + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fstp dword [esp + 0x20]
fmulp st(3)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x24]
fld dword [eax + ebx - 8]
fld dword [edi]
fld dword [edx + ebx - 8]
fld dword [edi + 4]
mov edi, dword [esp + 0x1c]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(1)
fmulp st(4)
fxch st(2)
fmulp st(1)
faddp st(2)
fld dword [eax + ebp - 8]
fld dword [edi]
fld dword [edx + ebp - 8]
fld dword [edi + 4]
mov edi, dword [esp + 0x2c]
fld st(3)
add esi, edi
mov edi, dword [esp + 0x30]
add dword [esp + 0x18], edi
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(1)
fmulp st(4)
fxch st(2)
fmulp st(1)
faddp st(2)
fld dword [eax - 8]
fld st(0)
fsub st(4)
fld dword [edx - 8]
fld st(0)
fsub st(7)
fxch st(6)
faddp st(3)
fxch st(2)
fst dword [eax - 8]
fxch st(6)
faddp st(2)
fxch st(1)
fst dword [edx - 8]
fld dword [esp + 0x20]
fadd st(3)
fld dword [esp + 0x24]
fadd st(5)
fxch st(4)
fsubr dword [esp + 0x20]
fxch st(5)
mov dword [esp + 0x20], esi
fsubr dword [esp + 0x24]
fxch st(7)
fsub st(1)
fstp dword [eax + ebx - 8]
fxch st(1)
fsub st(3)
fstp dword [edx + ebx - 8]
mov esi, dword [esp + 0x34]
add dword [esp + 0x1c], esi
fadd dword [eax - 8]
fstp dword [eax - 8]
fxch st(1)
fadd dword [edx - 8]
fstp dword [edx - 8]
fld st(0)
fadd st(4)
fstp dword [eax + ecx - 8]
fld st(2)
fsub st(2)
fstp dword [edx + ecx - 8]
fsubrp st(3)
fxch st(2)
fstp dword [eax + ebp - 8]
faddp st(1)
fstp dword [edx + ebp - 8]
cmp eax, dword [esp + 0x28]
jne 0xb5a360
add dword [esp + 0x38], 1
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
add dword [esp + 0x3c], edx
cmp dword [esp + 0x40], eax
jne 0xb5a325
jmp 0xb5a160
mov dword [esp + 0x78], 1
mov eax, dword [esp + 0x70]
movzx ecx, byte [esp + 0x9c]
mov eax, dword [esp + eax*4 + 0xa0]
mov ebx, eax
mov dword [esp + 0x28], eax
shl eax, cl
mov ecx, dword [esp + 0xe0]
mov ecx, dword [ecx + 0x30]
mov edi, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x64]
shl ecx, 3
mov edx, ecx
mov dword [esp + 0x30], ecx
imul edx, eax
test ebx, ebx
fld dword [edi + edx + 4]
jle 0xb5a158
lea ebp, [eax*8]
shl eax, 4
fstp dword [esp + 0x38]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x20], 0
shl eax, 3
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x24], eax
nop
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
fld dword [esp + 0x38]
mov eax, ebx
mov edx, edi
add eax, edi
mov edi, dword [esp + 0x64]
lea ecx, [ebx + eax]
mov ebx, dword [esp + 0x2c]
mov esi, ebx
nop
fld dword [eax]
add edx, 8
add eax, 8
add ecx, 8
fld dword [ebx]
fld dword [eax - 4]
fld dword [ebx + 4]
add ebx, ebp
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld dword [ecx - 8]
fld dword [esi]
fld dword [ecx - 4]
fld dword [esi + 4]
add esi, dword [esp + 0x1c]
fld st(3)
fmul st(3)
fstp dword [esp + 0x18]
fld st(1)
fmul st(1)
fsubr dword [esp + 0x18]
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld st(3)
fadd st(2)
fld st(3)
fadd st(2)
fld dword [0xe0be68]
fmul st(2)
fsubr dword [edx - 8]
fstp dword [eax - 8]
fld dword [0xe0be68]
fmul st(1)
fsubr dword [edx - 4]
fstp dword [eax - 4]
fxch st(5)
fsubrp st(3)
fxch st(2)
fmul st(5)
fxch st(3)
fsubrp st(1)
fmul st(4)
fxch st(1)
fadd dword [edx - 8]
fstp dword [edx - 8]
fxch st(2)
fadd dword [edx - 4]
fstp dword [edx - 4]
fld dword [eax - 8]
fadd st(2)
fstp dword [ecx - 8]
fld st(0)
fsubr dword [eax - 4]
fstp dword [ecx - 4]
fxch st(1)
fsubr dword [eax - 8]
fstp dword [eax - 8]
fadd dword [eax - 4]
fstp dword [eax - 4]
sub edi, 1
jne 0xb5a530
fstp st(0)
add dword [esp + 0x20], 1
mov edi, dword [esp + 0x34]
mov eax, dword [esp + 0x20]
add dword [esp + 0x24], edi
cmp dword [esp + 0x28], eax
jne 0xb5a510
jmp 0xb5a160
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
test eax, eax
mov ecx, eax
jle 0xb5a160
mov eax, dword [esp + 0xe4]
xor edx, edx
nop
lea esi, [esi]
fld dword [eax]
add edx, 1
add eax, 0x20
fld dword [eax - 0x10]
fld st(1)
fsub st(1)
fld dword [eax - 0x1c]
fld dword [eax - 0xc]
fld st(1)
fsub st(1)
fxch st(4)
faddp st(5)
faddp st(1)
fld dword [eax - 0x18]
fld dword [eax - 8]
fadd st(1)
fld dword [eax - 0x14]
fadd dword [eax - 4]
fld st(6)
fsub st(2)
fstp dword [eax - 0x10]
fld st(3)
fsub st(1)
fstp dword [eax - 0xc]
fxch st(6)
faddp st(1)
fstp dword [eax - 0x20]
fxch st(1)
faddp st(4)
fxch st(3)
fstp dword [eax - 0x1c]
fxch st(2)
fsub dword [eax - 8]
fld dword [eax - 0x14]
fsub dword [eax - 4]
fld st(3)
fadd st(1)
fstp dword [eax - 0x18]
fld st(2)
fsub st(2)
fstp dword [eax - 0x14]
fsubp st(3)
fxch st(2)
fstp dword [eax - 8]
faddp st(1)
fstp dword [eax - 4]
cmp ecx, edx
jne 0xb5a630
jmp 0xb5a160
mov dword [esp + 8], 0x4c
mov dword [esp + 4], 0xe0be00
mov dword [esp], str.assertion_failed:_m4
call fcn.00b371e0
cmp ax, 3
je 0xb5a490
jle 0xb5a6f2
cmp ax, 4
je 0xb5a289
cmp ax, 5
jne 0xb5a60d
mov dword [esp + 0x78], 1
jmp 0xb59dbc
cmp ax, 2
jne 0xb5a60d
mov dword [esp + 0x78], 1
jmp 0xb5a196