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

Disassembly:
push ebx
push esi
push edi
push ebp
sub esp, 0x28
mov eax, dword [esp + 0x3c]
test eax, eax
mov ebx, dword [esp + 0x40]
fldz
mov ebp, dword [ebx + 0x3a8]
je 0x51b3c2
mov dword [eax + 0x1c], 0xc47a0000
test ebp, ebp
je 0x51b3d8
mov dl, byte [ebp + 0x50]
shr dl, 3
movzx eax, dl
cmp eax, 5
mov dword [esp + 0x10], eax
jne 0x51b3e2
add esp, 0x28
fstp st(0)
pop ebp
pop edi
pop esi
pop ebx
ret
mov eax, dword [ebx + 0x244]
cmp eax, 0x3a
je 0x51b412
cmp eax, 0x38
je 0x51b412
cmp eax, 0x32
jne 0x51b401
add esp, 0x28
fstp st(0)
pop ebp
pop edi
pop esi
pop ebx
ret
mov ecx, ebx
fstp st(0)
call fcn.005179d0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov ax, word [ebx + 0x380]
mov word [esp + 0x14], ax
cmp word [esp + 0x14], 0
jne 0x51b437
mov ecx, ebx
fstp st(0)
call fcn.005179d0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
fld dword [0x692794]
fcomp dword [ebx + 0x354]
fnstsw ax
and ah, 0x44
cmp ah, 0x40
jne 0x51b460
mov ecx, ebx
fstp st(0)
call fcn.005179d0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov eax, dword [esp + 8]
xor ecx, ecx
xor eax, dword [esp + 8]
mov dword [esp + 8], eax
mov al, byte [ebp + 0x1fa]
and al, 1
jne 0x51b479
inc ecx
test cl, cl
jne 0x51b485
mov dword [esp + 8], 1
mov eax, dword [esp + 4]
xor edx, edx
xor eax, dword [esp + 4]
mov dword [esp + 4], eax
mov al, byte [ebp + 0x1fa]
shr al, 1
and al, 1
jne 0x51b4a0
inc edx
test dl, dl
jne 0x51b4ac
mov dword [esp + 4], 1
mov eax, dword [esp]
xor ecx, ecx
xor eax, dword [esp]
mov dword [esp], eax
mov al, byte [ebp + 0x1fa]
shr al, 3
and al, 1
jne 0x51b4c5
inc ecx
test cl, cl
jne 0x51b4d0
mov dword [esp], 1
movzx eax, word [esp + 0x14]
sub eax, 0xb
cmp eax, 8
ja case.0x51b4dd.13
jmp dword [eax*4 + 0x692e6c]
mov byte [esp + 8], 0
mov edi, 2
jmp case.0x51b4dd.13
mov edi, 4
jmp case.0x51b4dd.13
mov byte [esp + 8], 0
mov edi, 3
jmp case.0x51b4dd.13
mov edi, 5
cmp dword [ebp + 0x29c], 5
jne 0x51b9d0
xor esi, esi
cmp dword [esp + 0x10], 4
jne 0x51b666
cmp word [esp + 0x14], 0x13
jne 0x51b576
mov eax, dword [ebx + 0x4c]
mov edx, dword [ebp + 0x328]
push dword [0x6927f8]
push 0xc4
push edx
push eax
fstp st(0)
call fcn.00405640
add esp, 0x10
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
mov al, byte [ebp + 0x484]
and al, 0xf7
or al, 8
mov byte [ebp + 0x484], al
jmp 0x51b955
lea eax, [ebp + 4]
fld dword [eax + 8]
fst st(1)
fcomp dword [0x69279c]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x51b600
fcom dword [0x6928e8]
fnstsw ax
test ah, 0x45
jne 0x51b600
lea eax, [ebp + 0x24]
fld dword [eax + 8]
fcomp dword [0x692794]
fnstsw ax
test ah, 0x45
jne 0x51b600
cmp edi, 2
je 0x51b5b8
cmp edi, 4
jne 0x51b5c6
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b5d2
mov edx, dword [ebp + 0x328]
push 0xc3
push edx
mov eax, dword [ebx + 0x4c]
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
jmp 0x51b945
cmp edi, 2
je 0x51b60a
cmp edi, 4
jne 0x51b624
fcom dword [0x692794]
fnstsw ax
test ah, 0x45
jne 0x51b620
push 0x77
jmp 0x51b63a
push 0x79
jmp 0x51b63a
fcom dword [0x692794]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x51b638
push 0x78
jmp 0x51b63a
push 0x7a
mov eax, dword [ebx + 0x4c]
push 0
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push fcn.0051abc0
call fcn.004016a0
jmp 0x51b955
cmp word [esp + 0x14], 0x13
jne 0x51b6e0
mov ecx, dword [ebp + 0x1a8]
cmp dword [ecx + 0x244], 0x32
jne 0x51b6d0
mov al, byte [ecx + 0x151]
shr al, 2
and al, 1
jne 0x51b6d0
mov eax, dword [ebx + 0x4c]
mov esi, dword [ebp + 0x328]
push dword [0x6927f8]
push 0xc4
push esi
push eax
fstp st(0)
call fcn.00405640
add esp, 0x10
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
mov esi, dword [ebp + 0x1a8]
jmp 0x51b945
mov ecx, ebx
fstp st(0)
call fcn.005179d0
jmp 0x51b945
cmp edi, 2
je 0x51b6ee
cmp edi, 3
jne 0x51b818
cmp dword [ebp + 0x1a8], 0
je 0x51b7e0
lea edx, [ebp + 0x70]
fld dword [edx + 4]
fst st(1)
fmul st(0)
fld dword [edx]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fld dword [edx + 8]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fst st(1)
fsqrt
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fst st(1)
fcomp dword [0x6927fc]
fnstsw ax
test ah, 0x45
jne 0x51b770
mov ecx, ebx
fstp st(0)
call fcn.005179d0
mov ax, word [ebx + 0x380]
cmp ax, 0xf
je 0x51b751
cmp ax, 0x10
jne 0x51b757
push 0
push 0x1c
jmp 0x51b75b
push 0
push 0x1a
mov ecx, ebx
push 0x3e8
call fcn.004fd9f0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov ecx, dword [ebp + 0x1a8]
cmp dword [ecx + 0x244], 0x32
jne 0x51b7d0
mov al, byte [ecx + 0x151]
shr al, 2
and al, 1
jne 0x51b7d0
cmp edi, 2
jne 0x51b795
push 0x7b
jmp 0x51b797
push 0x7c
mov eax, dword [ebx + 0x4c]
push 0
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a9c0
call fcn.004016a0
mov esi, dword [ebp + 0x1a8]
jmp 0x51b945
mov ecx, ebx
fstp st(0)
call fcn.005179d0
jmp 0x51b945
cmp edi, 2
jne 0x51b7f3
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b7ff
mov edx, dword [ebp + 0x328]
push 0xc3
push edx
mov eax, dword [ebx + 0x4c]
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51b934
cmp dword [ebp + 0x1ac], 0
je 0x51b901
lea ecx, [ebp + 0x70]
fld dword [ecx + 4]
fst st(1)
fmul st(0)
fld dword [ecx]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fld dword [ecx + 8]
fstp st(2)
fld st(1)
fmul st(0)
faddp st(1)
fst st(1)
fsqrt
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fst st(1)
fcomp dword [0x6927fc]
fnstsw ax
test ah, 0x45
jne 0x51b8a0
mov ecx, ebx
fstp st(0)
call fcn.005179d0
mov ax, word [ebx + 0x380]
cmp ax, 0xf
je 0x51b87b
cmp ax, 0x10
jne 0x51b881
push 0
push 0x1c
jmp 0x51b885
push 0
push 0x1a
mov ecx, ebx
push 0x3e8
call fcn.004fd9f0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov edx, dword [ebp + 0x1ac]
cmp dword [edx + 0x244], 0x32
jne 0x51b8f6
mov al, byte [edx + 0x151]
shr al, 2
and al, 1
jne 0x51b8f6
cmp edi, 4
jne 0x51b8c5
push 0x7b
jmp 0x51b8c7
push 0x7c
mov eax, dword [ebx + 0x4c]
push 0
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a9c0
call fcn.004016a0
mov esi, dword [ebp + 0x1ac]
jmp 0x51b945
mov ecx, ebx
fstp st(0)
call fcn.005179d0
jmp 0x51b945
cmp edi, 4
jne 0x51b914
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b920
mov edx, dword [ebp + 0x328]
push 0xc3
push edx
mov eax, dword [ebx + 0x4c]
push eax
fstp st(0)
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
mov al, byte [ebp + 0x484]
and al, 0xf7
or al, 8
mov byte [ebp + 0x484], al
test esi, esi
je 0x51bd90
movzx eax, word [ebx + 0x380]
mov ecx, esi
push 0
push eax
push ebp
call fcn.00518430
mov ecx, esi
call fcn.004f4910
test al, al
je 0x51b982
mov ecx, esi
push ebx
call fcn.00514360
cmp dword [ebx + 0x3d4], 6
jne 0x51b9a4
call fcn.004bc120
cmp esi, eax
jne 0x51b9a4
cmp dword [ebp + 0x29c], 5
jne 0x51b9a4
mov byte [ebx + 0x601], 1
cmp esi, dword [ebp + 0x1a8]
jne 0x51bd90
mov ecx, dword [ebp + 0x1ac]
test ecx, ecx
je 0x51bd90
push 0
push 0x10
push ebp
call fcn.00518430
jmp 0x51bd90
mov ecx, ebp
push edi
mov esi, dword [ecx]
fstp st(0)
call dword [esi + 0x6c]
test al, al
jne 0x51bc71
mov ecx, ebp
push edi
mov esi, dword [ecx]
call dword [esi + 0x64]
test al, al
jne 0x51bc71
mov ecx, ebp
push ebx
call fcn.005b8460
test al, al
je 0x51bc30
cmp edi, 2
mov byte [ebp + 0x160], 0
je 0x51ba17
cmp edi, 4
jne 0x51bbd0
cmp byte [esp + 8], 0
jne 0x51bbb0
cmp byte [esp + 4], 0
jne 0x51bb90
cmp dword [ebx + 0x164], 0x12
jne 0x51bb27
mov ecx, dword [ebp + 0x1a8]
test ecx, ecx
je 0x51bb27
mov al, byte [ebp + 0x1fa]
shr al, 3
and al, 1
jne 0x51bb27
cmp byte [ecx + 0x160], 2
je 0x51bb27
cmp dword [ecx + 0x244], 0x32
jne 0x51bb27
mov eax, dword [ebx + 0x4c]
push 0x48
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
lea eax, [esp + 0x20]
lea edx, [esp + 0x24]
push edx
push eax
mov eax, dword [ebp + 0x1a8]
push ebx
mov ecx, ebp
push eax
call fcn.005b3a30
cmp dword [esp + 0x20], 0
je 0x51bae8
cmp dword [esp + 0x24], 0
je 0x51bae8
mov ecx, dword [esp + 0x24]
call fcn.005179d0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
push eax
call fcn.004eb5f0
mov ecx, dword [ebp + 0x1a8]
cmp dword [esp + 0x20], ecx
je 0x51bb1f
movzx eax, word [ebx + 0x380]
push 1
push eax
push ebp
call fcn.00518430
mov ecx, dword [ebp + 0x1a8]
call fcn.004f4910
test al, al
je 0x51bb1f
mov ecx, dword [ebp + 0x1a8]
push ebx
call fcn.00514360
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov ecx, ebp
mov esi, dword [ecx]
call dword [esi + 0x78]
test al, al
je 0x51bb73
cmp dword [ebp + 0x1a8], 0
jne 0x51bb73
cmp dword [ebx + 0x164], 0x12
jne 0x51bb73
mov eax, dword [ebx + 0x4c]
push 0x56
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov ecx, dword [ebx + 0x1f8]
push ebx
push 0x51a370
call fcn.004016a0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov eax, dword [ebx + 0x4c]
push 0x4c
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
mov eax, dword [ebx + 0x4c]
push 0xb6
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
mov eax, dword [ebx + 0x4c]
push 0xae
push 1
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
cmp byte [esp + 8], 0
jne 0x51bc11
cmp byte [esp + 4], 0
jne 0x51bbf6
mov eax, dword [ebx + 0x4c]
push 0x5c
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
mov eax, dword [ebx + 0x4c]
push 0xb6
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
mov eax, dword [ebx + 0x4c]
push 0xb2
push 1
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc66
cmp edi, 2
je 0x51bc3a
cmp edi, 4
jne 0x51bc40
push 0x4d
jmp 0x51bc42
push 0x5d
mov eax, dword [ebx + 0x4c]
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
mov al, byte [ebx + 0x151]
and al, 0xdf
or al, 0x20
mov byte [ebx + 0x151], al
push ebx
push fcn.0051abc0
jmp 0x51bd85
mov byte [ebp + 0x160], 0
cmp dword [ebx + 0x244], 0x38
je 0x51bc98
cmp byte [ebp + 0x1d0], 0
jne 0x51bcb0
cmp dword [ebp + 0x1a8], 0
je 0x51bcb0
cmp edi, 3
jne 0x51bcb0
push dword [esp + 0x40]
push 0
call fcn.0051abc0
pop ecx
pop ecx
jmp 0x51bd90
cmp edi, 2
je 0x51bcba
cmp edi, 4
jne 0x51bd27
cmp byte [esp + 8], 0
jne 0x51bd20
cmp byte [esp + 4], 0
je 0x51bce6
mov eax, dword [ebx + 0x4c]
push 0xb8
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd7f
cmp byte [esp], 0
je 0x51bd04
mov eax, dword [ebx + 0x4c]
push 0x51
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd7f
mov eax, dword [ebx + 0x4c]
push 0x50
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd7f
push 0xaf
jmp 0x51bd6b
cmp byte [esp + 8], 0
jne 0x51bd66
cmp byte [esp + 4], 0
je 0x51bd40
push 0xb8
push 2
jmp 0x51bd6d
cmp byte [esp], 0
je 0x51bd60
mov eax, dword [ebx + 0x4c]
push 0x61
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd7f
push 0x60
push 0
jmp 0x51bd6d
push 0xb3
push 1
mov eax, dword [ebx + 0x4c]
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
push ebx
push 0x51a370
mov ecx, dword [ebx + 0x1f8]
call fcn.004016a0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret