Function at 0x51b3c0
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 0x51b3e2
mov dword [eax + 0x1c], 0xc47a0000
test ebp, ebp
je 0x51b3f8
mov dl, byte [ebp + 0x50]
shr dl, 3
movzx eax, dl
cmp eax, 5
mov dword [esp + 0x10], eax
jne 0x51b402
add esp, 0x28
fstp st(0)
pop ebp
pop edi
pop esi
pop ebx
ret
mov eax, dword [ebx + 0x244]
cmp eax, 0x3a
je 0x51b432
cmp eax, 0x38
je 0x51b432
cmp eax, 0x32
jne 0x51b421
add esp, 0x28
fstp st(0)
pop ebp
pop edi
pop esi
pop ebx
ret
mov ecx, ebx
fstp st(0)
call fcn.005179f0
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 0x51b457
mov ecx, ebx
fstp st(0)
call fcn.005179f0
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 0x51b480
mov ecx, ebx
fstp st(0)
call fcn.005179f0
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 0x51b499
inc ecx
test cl, cl
jne 0x51b4a5
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 0x51b4c0
inc edx
test dl, dl
jne 0x51b4cc
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 0x51b4e5
inc ecx
test cl, cl
jne 0x51b4f0
mov dword [esp], 1
movzx eax, word [esp + 0x14]
sub eax, 0xb
cmp eax, 8
ja case.0x51b4fd.13
jmp dword [eax*4 + 0x692e6c]
mov byte [esp + 8], 0
mov edi, 2
jmp case.0x51b4fd.13
mov edi, 4
jmp case.0x51b4fd.13
mov byte [esp + 8], 0
mov edi, 3
jmp case.0x51b4fd.13
mov edi, 5
cmp dword [ebp + 0x29c], 5
jne 0x51b9f0
xor esi, esi
cmp dword [esp + 0x10], 4
jne 0x51b686
cmp word [esp + 0x14], 0x13
jne 0x51b596
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 0x51a390
call fcn.004016a0
mov al, byte [ebp + 0x484]
and al, 0xf7
or al, 8
mov byte [ebp + 0x484], al
jmp 0x51b975
lea eax, [ebp + 4]
fld dword [eax + 8]
fst st(1)
fcomp dword [0x69279c]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x51b620
fcom dword [0x6928e8]
fnstsw ax
test ah, 0x45
jne 0x51b620
lea eax, [ebp + 0x24]
fld dword [eax + 8]
fcomp dword [0x692794]
fnstsw ax
test ah, 0x45
jne 0x51b620
cmp edi, 2
je 0x51b5d8
cmp edi, 4
jne 0x51b5e6
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b5f2
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 0x51a390
call fcn.004016a0
jmp 0x51b965
cmp edi, 2
je 0x51b62a
cmp edi, 4
jne 0x51b644
fcom dword [0x692794]
fnstsw ax
test ah, 0x45
jne 0x51b640
push 0x77
jmp 0x51b65a
push 0x79
jmp 0x51b65a
fcom dword [0x692794]
fnstsw ax
and ah, 5
cmp ah, 1
jne 0x51b658
push 0x78
jmp 0x51b65a
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.0051abe0
call fcn.004016a0
jmp 0x51b975
cmp word [esp + 0x14], 0x13
jne 0x51b700
mov ecx, dword [ebp + 0x1a8]
cmp dword [ecx + 0x244], 0x32
jne 0x51b6f0
mov al, byte [ecx + 0x151]
shr al, 2
and al, 1
jne 0x51b6f0
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 0x51a390
call fcn.004016a0
mov esi, dword [ebp + 0x1a8]
jmp 0x51b965
mov ecx, ebx
fstp st(0)
call fcn.005179f0
jmp 0x51b965
cmp edi, 2
je 0x51b70e
cmp edi, 3
jne 0x51b838
cmp dword [ebp + 0x1a8], 0
je 0x51b800
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 0x51b790
mov ecx, ebx
fstp st(0)
call fcn.005179f0
mov ax, word [ebx + 0x380]
cmp ax, 0xf
je 0x51b771
cmp ax, 0x10
jne 0x51b777
push 0
push 0x1c
jmp 0x51b77b
push 0
push 0x1a
mov ecx, ebx
push 0x3e8
call fcn.004fda10
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov ecx, dword [ebp + 0x1a8]
cmp dword [ecx + 0x244], 0x32
jne 0x51b7f0
mov al, byte [ecx + 0x151]
shr al, 2
and al, 1
jne 0x51b7f0
cmp edi, 2
jne 0x51b7b5
push 0x7b
jmp 0x51b7b7
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 0x51a9e0
call fcn.004016a0
mov esi, dword [ebp + 0x1a8]
jmp 0x51b965
mov ecx, ebx
fstp st(0)
call fcn.005179f0
jmp 0x51b965
cmp edi, 2
jne 0x51b813
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b81f
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 0x51b954
cmp dword [ebp + 0x1ac], 0
je 0x51b921
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 0x51b8c0
mov ecx, ebx
fstp st(0)
call fcn.005179f0
mov ax, word [ebx + 0x380]
cmp ax, 0xf
je 0x51b89b
cmp ax, 0x10
jne 0x51b8a1
push 0
push 0x1c
jmp 0x51b8a5
push 0
push 0x1a
mov ecx, ebx
push 0x3e8
call fcn.004fda10
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret
mov edx, dword [ebp + 0x1ac]
cmp dword [edx + 0x244], 0x32
jne 0x51b916
mov al, byte [edx + 0x151]
shr al, 2
and al, 1
jne 0x51b916
cmp edi, 4
jne 0x51b8e5
push 0x7b
jmp 0x51b8e7
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 0x51a9e0
call fcn.004016a0
mov esi, dword [ebp + 0x1ac]
jmp 0x51b965
mov ecx, ebx
fstp st(0)
call fcn.005179f0
jmp 0x51b965
cmp edi, 4
jne 0x51b934
mov ecx, dword [ebp + 0x328]
push 0xc2
push ecx
jmp 0x51b940
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 0x51a390
call fcn.004016a0
mov al, byte [ebp + 0x484]
and al, 0xf7
or al, 8
mov byte [ebp + 0x484], al
test esi, esi
je 0x51bdb0
movzx eax, word [ebx + 0x380]
mov ecx, esi
push 0
push eax
push ebp
call fcn.00518450
mov ecx, esi
call fcn.004f4930
test al, al
je 0x51b9a2
mov ecx, esi
push ebx
call fcn.00514380
cmp dword [ebx + 0x3d4], 6
jne 0x51b9c4
call fcn.004bc140
cmp esi, eax
jne 0x51b9c4
cmp dword [ebp + 0x29c], 5
jne 0x51b9c4
mov byte [ebx + 0x601], 1
cmp esi, dword [ebp + 0x1a8]
jne 0x51bdb0
mov ecx, dword [ebp + 0x1ac]
test ecx, ecx
je 0x51bdb0
push 0
push 0x10
push ebp
call fcn.00518450
jmp 0x51bdb0
mov ecx, ebp
push edi
mov esi, dword [ecx]
fstp st(0)
call dword [esi + 0x6c]
test al, al
jne 0x51bc91
mov ecx, ebp
push edi
mov esi, dword [ecx]
call dword [esi + 0x64]
test al, al
jne 0x51bc91
mov ecx, ebp
push ebx
call fcn.005b8480
test al, al
je 0x51bc50
cmp edi, 2
mov byte [ebp + 0x160], 0
je 0x51ba37
cmp edi, 4
jne 0x51bbf0
cmp byte [esp + 8], 0
jne 0x51bbd0
cmp byte [esp + 4], 0
jne 0x51bbb0
cmp dword [ebx + 0x164], 0x12
jne 0x51bb47
mov ecx, dword [ebp + 0x1a8]
test ecx, ecx
je 0x51bb47
mov al, byte [ebp + 0x1fa]
shr al, 3
and al, 1
jne 0x51bb47
cmp byte [ecx + 0x160], 2
je 0x51bb47
cmp dword [ecx + 0x244], 0x32
jne 0x51bb47
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 0x51a390
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.005b3a50
cmp dword [esp + 0x20], 0
je 0x51bb08
cmp dword [esp + 0x24], 0
je 0x51bb08
mov ecx, dword [esp + 0x24]
call fcn.005179f0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
push eax
call fcn.004eb610
mov ecx, dword [ebp + 0x1a8]
cmp dword [esp + 0x20], ecx
je 0x51bb3f
movzx eax, word [ebx + 0x380]
push 1
push eax
push ebp
call fcn.00518450
mov ecx, dword [ebp + 0x1a8]
call fcn.004f4930
test al, al
je 0x51bb3f
mov ecx, dword [ebp + 0x1a8]
push ebx
call fcn.00514380
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 0x51bb93
cmp dword [ebp + 0x1a8], 0
jne 0x51bb93
cmp dword [ebx + 0x164], 0x12
jne 0x51bb93
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 0x51a390
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 0x51bc86
mov eax, dword [ebx + 0x4c]
push 0xb6
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc86
mov eax, dword [ebx + 0x4c]
push 0xae
push 1
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc86
cmp byte [esp + 8], 0
jne 0x51bc31
cmp byte [esp + 4], 0
jne 0x51bc16
mov eax, dword [ebx + 0x4c]
push 0x5c
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc86
mov eax, dword [ebx + 0x4c]
push 0xb6
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc86
mov eax, dword [ebx + 0x4c]
push 0xb2
push 1
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bc86
cmp edi, 2
je 0x51bc5a
cmp edi, 4
jne 0x51bc60
push 0x4d
jmp 0x51bc62
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.0051abe0
jmp 0x51bda5
mov byte [ebp + 0x160], 0
cmp dword [ebx + 0x244], 0x38
je 0x51bcb8
cmp byte [ebp + 0x1d0], 0
jne 0x51bcd0
cmp dword [ebp + 0x1a8], 0
je 0x51bcd0
cmp edi, 3
jne 0x51bcd0
push dword [esp + 0x40]
push 0
call fcn.0051abe0
pop ecx
pop ecx
jmp 0x51bdb0
cmp edi, 2
je 0x51bcda
cmp edi, 4
jne 0x51bd47
cmp byte [esp + 8], 0
jne 0x51bd40
cmp byte [esp + 4], 0
je 0x51bd06
mov eax, dword [ebx + 0x4c]
push 0xb8
push 2
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd9f
cmp byte [esp], 0
je 0x51bd24
mov eax, dword [ebx + 0x4c]
push 0x51
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd9f
mov eax, dword [ebx + 0x4c]
push 0x50
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd9f
push 0xaf
jmp 0x51bd8b
cmp byte [esp + 8], 0
jne 0x51bd86
cmp byte [esp + 4], 0
je 0x51bd60
push 0xb8
push 2
jmp 0x51bd8d
cmp byte [esp], 0
je 0x51bd80
mov eax, dword [ebx + 0x4c]
push 0x61
push 0
push eax
call fcn.004058b0
add esp, 0xc
mov dword [ebx + 0x1f8], eax
jmp 0x51bd9f
push 0x60
push 0
jmp 0x51bd8d
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 0x51a390
mov ecx, dword [ebx + 0x1f8]
call fcn.004016a0
add esp, 0x28
pop ebp
pop edi
pop esi
pop ebx
ret